2011-04-13 5 views
1

"하루 종일"응용 프로그램이 예기치 않게 중지되었습니다. 다시 시도하십시오. " 이 문제는 "setOnClickListener"메서드로 인해 발생합니다. 이 구성 요소는 다음과 같은 방식으로 작업합니다.setOnClickListener 문제 - 예기치 않게 응용 프로그램이 중지됨

public class main extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button nnumb1 = ((Button)this.findViewById(R.id.numb1)); 
     nnumb1.setOnClickListener((OnClickListener) this); 

     Button nnumb2 = ((Button)this.findViewById(R.id.numb2)); 
     nnumb2.setOnClickListener((OnClickListener) this); 

    } 

    public void onClickHandler(View v){ 
     setTitle("???"); 
     String pressed = null; 

     switch (v.getId()) { 
      case R.id.nnumb1: 
       pressed="number one"; 
      break; 
      case R.id.nnumb2: 
       pressed="number two"; 
      break; 
     } 

     new AlertDialog.Builder(this).setTitle("Info").setMessage(pressed).setNeutralButton("Okey", null).show();  
     } 
} 

"numb1"및 "numb2"라는 ID가 있습니다. 문제는 첫 번째 5 줄로 보입니다 - 그러나 나는 그것을 해결하는 방법을 모르겠지만 ... 나는 어떤 힌트도 기뻐할 것입니다 ...

고마워요!

답변

5

문제는이 선 것 같다 : 당신은 당신이 OnClickListener를에 현재 활동있어 캐스팅하고

nnumb2.setOnClickListener((OnClickListener) this); 

,하지만 당신은 올바른 인터페이스를 구현하지 않았기 때문에이 동안 당신에게 예외를 제공 실행 시간.

public class main extends Activity implements OnClickListener 

그런 다음이처럼 사용할 수 있습니다 : 당신은 당신의 활동에 OnClickListener를 구현해야

numb2.setOnClickListener(this); 
+0

좋은 답변, roflcopter - 및 10k에 대한 축하; 내 +1은 당신에게 마지막 조금을 밀어 넣은 것 같습니다 :) – Cephron

+0

예, 결코 잊지 않을 것입니다;) 이제는 정말 달라 보입니다. – RoflcoptrException

1

당신은 단지 설정 각각의 버튼에 대한 OnClickListener를 할 수 있습니다, 그게 내가 처리하는 방법 일반적이다 어쨌든 이런 상황.

Button nnumb1 = ((Button)this.findViewById(R.id.numb1)); 
nnumb1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       //stuff to do if button1 is clicked 
      } 
     }); 
Button nnumb2 = ((Button)this.findViewById(R.id.numb2)); 
nnumb2.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       //stuff to do if button2 is clicked 
      } 
     }); 
관련 문제