Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我运行应用程序时,它正在崩溃_Java_Android - Fatal编程技术网

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必须在对该活动设置视图后调用。更正它。如果应用程序正在崩溃,您肯定会收到错误消息,请查看日志。。。。