2011-05-09 217 views
0

我嘗試學習JAVA,並嘗試爲Android編寫應用程序。我的代碼很簡單,我經常看到這樣的代碼。但是當我第二次按下按鈕時,消息不會返回。它第一次工作。我的錯誤是什麼?簡單Android中的setOnClickListener不起作用

package com.test.helloworld; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

import android.widget.Toast; 

public class HelloWorldApp extends Activity { 

    private Button closeButton; 
    private Button buttonAnswer1; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     buttonAnswer1 = (Button)findViewById(R.id.button1); 
     closeButton = (Button)findViewById(R.id.buttonEnde); 

     buttonAnswer1.setFocusable(false); 
     closeButton.setFocusable(false); 


     buttonAnswer1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       setContentView(R.layout.main);   
       showToastMessage("1"); 

      } 
     }); 

     closeButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       setContentView(R.layout.main);   
       showToastMessage("2"); 
      } 
     });   
    } 

    private void showToastMessage(String msg){ 

     Toast toast = Toast.makeText(this, msg, Toast.LENGTH_SHORT); 

     toast.show(); 

    } 
} 

回答

3

不要調用點擊監聽器裏的setContentView方法:

buttonAnswer1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     showToastMessage("1"); 
    } 
}); 
3

在你onClick功能,您要更換整個內容來看,這將有新的實例替換現有的按鈕對象。這些新實例不再具有任何OnClickListeners。

在這種情況下沒有理由替換內容視圖,因此解決方案是從onClick函數中消除這些調用。但如果由於某種原因需要更換內容視圖,則需要完成查找新按鈕的全過程,併爲每個按鈕調用setOnClickListener