2014-04-03 38 views
0

我會想,如下面findViewById使用可變CB,但它給我一個錯誤,任何想法如何做到這一點如何使用變量變量查找視圖由ID

public class Compare1 extends Activity{ 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.commac1); 
    // setdesign(); 
    ImageView btn=(ImageView) findViewById(R.id.comparenow); 
    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      for(int check=1;check<17;check++){ 
       int a=check; 
      String cb="checkBox"+a; 
       int id=getResources().getIdentifier(cb, "id", getPackageName()); 
       CheckBox cb=(CheckBox) findViewById(id); 
       if(cb.isChecked()){ 
        Toast.makeText(Compare1.this, "you selected" +cb, Toast.LENGTH_SHORT).show(); 
        }} 

     } 
    }); 
+0

你爲什麼不給資源ID喜歡你與ImageView的那樣? – tyczj

+0

@tyczj,因爲有16個複選框,它會非常凌亂 – Rajeev

+0

,因爲他有17個。你得到的錯誤是什麼? – hasan83

回答

0

嘗試:

int id= Compare1.this.getResources().getIdentifier(cb, "id", getPackageName()); 

單獨使用getResources()使得該方法存在於OnClickListener對象中。

另外:

(CheckBox) Compare1.this.findViewById(id); 
+0

@哈桑如果我刪除for循環和硬編碼cb變量爲cb1,cb2 ...它工作正常。沒有問題,這行line.issue與此行CheckBox cb =(CheckBox)findViewById(id); – Rajeev