Android setOnClickListener导致应用程序崩溃

Android setOnClickListener导致应用程序崩溃,android,crash,Android,Crash,你好,我有一个非常简单的代码,我正试图通过Android Studio运行 public class MainActivity extends ActionBarActivity { Button random; TextView display; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.

你好,我有一个非常简单的代码,我正试图通过Android Studio运行

public class MainActivity extends ActionBarActivity {
Button random;
TextView display;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    random = (Button) findViewById(R.id.button);
    display = (TextView) findViewById(R.id.TextView);

    random.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            display.setText("I have changed");
        }
    });
我并没有添加太多,但每当我使用setOnClickListener时,不管它里面有什么,都会使应用程序崩溃。我找不到解决这个问题的办法

多谢各位


//编辑:对不起。我添加了一个错误的代码,
random
是一个按钮

您正在对
random
对象设置
setOnClickListener
方法,该对象的代码当前为
Null

因此,您将得到一个
NullPointerException

我想你是想把它改成
按钮。

什么是“随机”?我认为正确的做法是:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        display.setText("I have changed");
    }
});
在您要设置的代码中,单击按钮上的listener。请确保您获得了正确的id和正确的对象来设置侦听器。要在其上设置clcik侦听器的按钮的id应与在活动中定义的id相同
活跃
按钮按钮=(按钮)findViewById(R.id.button1);
在XML中
首先,按错误级别检查logcat 其次,random未初始化

你需要

1.activity_main.xml中的创建按钮

 For example, 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity" >
<Button
    android:id="@+id/myCoolButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />
 </RelativeLayout>

而且它有效!希望能对您有所帮助

这似乎不是您的情况,但我也遇到了同样的问题,这是由这些线路引起的

mButton = findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    // ...
}
});
以前

setContentView(R.layout.activity_main);

对不起,我添加了错误的代码。它已经是一个“按钮”,但仍然不工作。好的,所以我看到的下一个问题是显示对象的id:R.id.TextView。您确定这是您在xml文件activity_main中提供的id吗?请尝试将其切换为显示。是,这是textview的ID。我把它改成了“电视”,这样就不那么让人困惑了,但这似乎没什么帮助。你能把你的日志贴出来吗?还有你的xml布局文件?这和我给出的答案不一样吗?你能发布日志吗?我也有同样的问题,你解决了吗?如果你仍然遇到错误,请发布错误日志,这样我们可以帮助你找到正确的解决方案
mButton = findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    // ...
}
});
setContentView(R.layout.activity_main);