2016-01-16 32 views
-1

我的好友和我正在Android Studio中編寫一個簡單的應用程序。當您按下按鈕時,會打開一個新的活動,並顯示您推送的按鈕的名稱,並在該文件中顯示該文本。我想使用txt文件中的文字設置按鈕的文本

我有生成第一組按鈕(這些都是硬編碼)的代碼,我可以得到推動按鈕的名稱。我的麻煩是閱讀文本文件並顯示內容。文本文件中的每一行都必須是一個按鈕的文本值。我不能硬編碼這些單詞,因爲它們可以經常更改。

示例; 在主要活動中,您按下標有「圓形」的按鈕,它會將您帶到一個頁面,該頁面將名爲「round」的文本文件中的所有單詞列爲按鈕。

我希望這更清楚。

在此先感謝。

+0

能的數量按鈕更改?如果答案是否定的,只是名稱可以改變,也許你可以做這樣的事情: http://stackoverflow.com/a/12421888/5063263而不是追加文本只是做一個數組的所有按鈕,每次它循環將按鈕的文本設置爲從緩衝讀取器獲得的文本 – ivan

+0

是的,如果名稱數量改變,則按鈕數量改變。所以如果我現在有8個名字,那麼我會有8個按鈕,但明天我可能會有12個名字,所以我會有12個按鈕。 – vbneil54

回答

0

假設你的文件在SD卡中,並且你的名字和你的按鈕一樣,這應該可以工作。在你的第一個活動中,你可以創建一個公共變量(或者你喜歡Frogatto提到的額外元素,他們真的比我更好),它存儲點擊的按鈕名稱,然後添加它+ 「TXT」。

PS:我花了時間做只是因爲我的好奇心的C這樣的:

public class test extends Activity { 
    LinearLayout layout; 
    Button btnarr [] = new Button[50]; 
    int counter = 0,check=0; 
    protected void onCreate(Bundle savedInstanceState) { 
     counter=0; 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test); 

       layout = new LinearLayout(this); 
       layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
       layout.setOrientation(LinearLayout.VERTICAL); 

     File sdcard = Environment.getExternalStorageDirectory(); 

     //Get the text file 
     File file = new File(sdcard,"yourbuttonname.txt"); 

     //Read text from file 
     StringBuilder text = new StringBuilder(); 

     try { 
      BufferedReader br = new BufferedReader(new FileReader(file)); 
      String line; 

      while ((line = br.readLine()) != null) { 
       text.append(line); 
       btnarr[counter] = new Button(this); 
       btnarr[counter].setText(text.toString()); 
       text = new StringBuilder(); 
       counter++; 
       check++; 
      } 
      br.close(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     doit(); 
    } 
    public void doit() 
    { 
     counter = 0; 
     while(counter < check) 
     { 
      LinearLayout row = new LinearLayout(this); 
      row.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
      btnarr[counter].setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
      row.addView(btnarr[counter]); 
      layout.addView(row); 
      counter++; 
     } 
     setContentView(layout); 
    } 
} 

的test.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

</LinearLayout> 

enter image description here

enter image description here

+0

謝謝。還有一個問題,你如何從資產文件夾讀取文件,而不是從外部存儲設備讀取文件。 – vbneil54

+0

@ vbneil54你應該閱讀這個答案:http://stackoverflow.com/a/9544781/5063263 – ivan

0

您應採取以下步驟:

  • 當用戶點擊一個按鈕,創建一個Intent指向第二個活動,並附加按鈕的名稱,將其作爲它的臨時演員。

    Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
    intent.putExtra("nameOfButton", /* name of button */); 
    startActivity(inetnt); 
    
  • 在第二活動通過getIntent()方法獲得到Intent的引用,並讀取其額外作爲按鈕的名稱。

    Intent intent = getIntent(); 
    String nameOfButton = intent.getStringExtra("nameOfButton"); 
    
  • 閱讀相應的文本文件並相應地給佈局文件充氣。

+0

這聽起來不錯。我會在今天晚些時候嘗試。謝謝。 – vbneil54

相關問題