2011-04-13 30 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();  
     } 
} 

main.xml中的按鈕ID稱爲「numb1」和「numb2」。 它看起來問題是第一個5行 - 但我不知道,如何解決它...我會很高興任何提示...

謝謝!

回答

5

的問題似乎是這一行:

nnumb2.setOnClickListener((OnClickListener) this); 

你鑄造你當前活動的OnClickListener,但你沒有實現正確的接口,所以這同時給你一個異常運行。你必須實現OnClickListener您的活動:

public class main extends Activity implements OnClickListener 

然後你可以使用它像這樣:

numb2.setOnClickListener(this); 
+0

好的答案,roflcopter - 並恭喜10K;我的+1似乎已經推動了你最後一點:) – Cephron 2011-04-13 19:32:31

+0

是的,我永遠不會忘記;)現在看起來非常不同。 – RoflcoptrException 2011-04-13 19:33:55

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 
      } 
     });