2011-03-20 49 views
0

你需要膨脹一個視圖,以獲得其onClick方法的ID?因爲當我在模擬器中運行我的程序並單擊特定按鈕時,它什麼也不做!我希望它回到main.xml佈局!我是否需要以其他方式處理onClick?您是否需要膨脹視圖才能獲得onClick方法的ID?

public void onClick(View v) { 
     switch(v.getId()){ 
      case R.id.play: 
       setContentView(R.layout.play); 
       setQuestion(); 
       break; 
      case R.id.level: 
       setContentView(R.layout.level); 
       if(lvl.equals("1")) { 
        lvl1.setChecked(true); 
       } 
       if(lvl.equals("2")) { 
        lvl2.setChecked(true); 
       } 
       if(lvl.equals("3")) { 
        lvl3.setChecked(true); 
       } 
       if(lvl.equals("4")) { 
        lvl4.setChecked(true); 
       } 
       if(lvl.equals("5")) { 
        lvl5.setChecked(true); 
       } 
       break; 
      case R.id.setLevel: 
       if(lvl1.isChecked()) { 
        setLevel("1"); 
       } 
       if(lvl2.isChecked()) { 
        setLevel("2"); 

       } 
       if(lvl3.isChecked()) { 
        setLevel("3"); 
       } 
       if(lvl4.isChecked()) { 
        setLevel("4"); 
       } 
       if(lvl5.isChecked()) { 
        setLevel("5"); 
       } 
       setContentView(R.layout.main); 
       break; 
     } 
    } 

這裏是我得到的意見:

setContentView(R.layout.main); 

     Button play = (Button)findViewById(R.id.play); 
     play.setOnClickListener(this); 
     Button level = (Button)findViewById(R.id.level); 
     level.setOnClickListener(this); 
     Button setLevel = (Button)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.setLevel); 

     setLevel.setOnClickListener(this); 


     lvl1 = (RadioButton)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.lvl1); 

     lvl2 = (RadioButton)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.lvl2); 

     lvl3 = (RadioButton)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.lvl3); 

     lvl4 = (RadioButton)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.lvl4); 

     lvl5 = (RadioButton)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.lvl5); 

我應該怎麼做,這樣當我點擊setLevel按鈕,它改變了看法回的main.xml視圖

回答

3

安德魯,

您可能需要爲每個項目制定個別onClick()方法。這就是我處理可點擊的對象的方式。

實施例:

Button play = (Button)findViewById(R.id.play); 
play.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       //perform play button actions here 
      } 
     }); 

這樣你已經擁有的按鈕對象創建基於它的ID值,並且onClickListener是專門針對該項目。

祝你好運!