Java 当我运行应用程序时,它正在崩溃
我没有收到任何错误,但当我运行应用程序时,它会崩溃:Java 当我运行应用程序时,它正在崩溃,java,android,Java,Android,我没有收到任何错误,但当我运行应用程序时,它会崩溃: public class MainActivity extends AppCompatActivity { ImageButton Nr1 = (ImageButton) findViewById(R.id.ImageButton1); public void machwas(View v) { Nr1.setImageResource(R.drawable.x); } @Override
public class MainActivity extends AppCompatActivity {
ImageButton Nr1 = (ImageButton) findViewById(R.id.ImageButton1);
public void machwas(View v) {
Nr1.setImageResource(R.drawable.x);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
创建视图后,必须调用findViewById
public class MainActivity extends AppCompatActivity {
ImageButton Nr1 ;
public void machwas(View v){
Nr1.setImageResource(R.drawable.x);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Nr1 = (ImageButton)findViewById(R.id.ImageButton1);
machwas(0);
}
}
findViewById()
搜索由setContentView()
设置的视图。在您的代码中,findViewById()
在onCreate()
之前被调用,因此还没有视图集,因此所有查找都将失败,您将始终在那里得到null
BTW:考虑使用帮手,如But刀, < P>这是错误的:
public class MainActivity extends AppCompatActivity {
ImageButton Nr1 = (ImageButton)findViewById(R.id.ImageButton1);
因为findViewById()
应该在onCreate
方法中调用,原因是在这之后布局会膨胀,您准备好获取视图并初始化小部件
因此,您所做的是错误地初始化ImageButton,可能会在该行之后为null,然后在此处为null
public void machwas(View v){
Nr1.setImageResource(R.drawable.x);
}
将爆发一个NullPointer异常
但这只是一个推论,因为你没有发布日志
有关更多信息,请查看活动生命周期和
findViewById必须在对该活动设置视图后调用。更正它。如果应用程序正在崩溃,您肯定会收到错误消息,请查看日志。。。。