2015-11-22 77 views
0

我想用不同的方式聲明按鈕和其他組件,wonna減少我的代碼行。 所以,我想是這樣的:將數組用於組件聲明perpouses

public class Main extends Activity { 
      EditText[] Items; 
      TextView[] Total; 
      String[] ids = {"editText1","editText2","textView8","textView7"}; 
      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 
       for(int i=0;i<2;i++){ 
        Items[i]=(EditText)findViewById(R.id.ids[i]);` 
       } 
      } 
     } 

它不工作,你明白我wonna做些什麼?可能嗎 ?

+0

你究竟是什麼意思是不工作?所以你會得到錯誤?預期的行爲是什麼? – EkcenierK

+0

我只是不想寫 next =(Button)findViewById(R.id.button1); back =(Button)findViewById(R.id.button2); others =(Button)findViewById(R.id.button3); 只是一個for循環,將它們保存在一個數組中。 –

回答

1

R.id.Something是自動生成的常量。

你不能使用字符串指代他們。

如果你聲明爲INT consts的數組你可以遍歷: int[] ids = new int[]{R.id.editText1,R.id.editText2,R.id.textView8,R.id.textView7};

然後 Items[i]=(EditText)findViewById(ids[i]);

0

R.id .someting實際上是一個int值,您可以在項目中獲得表單R文件,例如常量值。你不能像串一樣使用它。如果你是初學者,在你的項目中找到R文件有點棘手,但是當你發現它時,你會發現你的xml文件中的所有視圖都有通過R.id.name連接的int值。