簡體   English   中英

當我嘗試設置clickListener時,應用崩潰

[英]When I try to set a clickListener, app crashes

每次我在模擬器上運行此應用程序時,當我點擊播放按鈕時,該應用程序都會崩潰:

public class PixelCheckActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pixel_check);
    final Button play = (Button) findViewById(R.id.play);
    // ...40 b's defined here ex: final Button b1 = (Button) findViewById(R.id.b1);
    final Button[][] arr = {
            {b1,b2,b3,b4,b5},
            {b6,b7,b8,b9,b10},
            {b11,b12,b13,b14,b15},
            {b16,b17,b18,b19,b20},
            {b21,b22,b23,b24,b25},
            {b26,b27,b28,b29,b30},
            {b31,b32,b33,b34,b35},
            {b36,b37,b38,b39,b40}
    };
    final View.OnClickListener listener1 = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            setContentView(R.layout.pixel_tap_game);
            final View.OnClickListener listener = new View.OnClickListener() {
                @Override
                public void onClick(View view){view.setBackgroundColor(Color.RED);}
            };
            for(int i=0;i<=4;i++){arr[0][i].setOnClickListener(listener);}
        }
    };
    play.setOnClickListener(listener1);
}
}

我認為問題是,40 b與播放按鈕位於不同的布局文件中。 那么,我需要做什么來解決此問題?

這是Logcat崩潰日志: http ://i.imgur.com/bCoa7jL.png

如果這40個按鈕位於不同的布局中,或者它們不在您為活動添加的布局中( R.layout.activity_pixel_check ),則無法通過findViewById方法獲得引用。 如果它位於活動的布局中 findViewById將返回視圖引用,否則返回null 因此,您將有一個由40個空引用組成的數組,當您調用arr[0][i].setOnClickListener(listener)您肯定會收到NullPointerException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM