2014-11-02 98 views
1

每次我在我的仿真器上运行该应用程序,该应用程序崩溃,当我点击播放按钮:当我尝试设置clickListener,应用程序崩溃,

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

+0

您能否给我们更多详细信息?发布您的Logcat或相关的东西。它可能是空的Button播放。请提供更多细节。 – nunofmendes 2014-11-02 15:51:08

+1

请分享崩溃日志。 – 2014-11-02 15:51:55

+0

你有初始化arr [] []按钮吗? – 2014-11-02 16:05:08

回答

1

如果40个按键在不同的布局,如果他们不是在您的活动(R.layout.activity_pixel_check)充气的布局,那么你就不能获得通过findViewById方法参考。 findViewById将返回视图参考如果它处于活动的布局如果不是则为空。因此,您将拥有40个空引用的数组,当您调用arr[0][i].setOnClickListener(listener)时,您肯定会得到NullPointerException

+0

那么我需要在按钮被点击后初始化40个按钮吗?如果是这样如何? – Nathan 2014-11-02 23:13:30

+0

在setContentView(R.layout.pixel_tap_game)之后初始化按钮。不过我建议你使用两个活动,一个使用播放按钮,另一个使用40个按钮,改变activity的布局并不是普通的android编程。写入listener1的onClick:startActivity(新的Intent(PixelCheckAcrivity.this,ButtonsActivity.class) ),其中ButtonsActivity将成为其他活动与布局R.layout.pixel_tap_game – rickyalbert 2014-11-03 00:00:11

+0

感谢您的帮助。我不知道它是否工作(由于gradle文件同步错误),但根据Logcat错误,我得到你的解决方案应该工作:)谢谢! – Nathan 2014-11-03 02:51:41

相关问题