2011-03-20 1 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를 구체적으로 해당 항목에 맞게 조정이 방법.

행운을 빈다!

관련 문제