Onclick监听器抛出NullPointerException

时间:2013-08-18 06:57:07

标签: java android android-layout

我设置了一个按钮,当用户点击它时,我正试图显示一个祝酒词。这是我的Java代码 -

file = (Button) findViewById(R.id.file);

file.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Display the file chooser dialog
                //showChooser();
                Toast.makeText(getApplicationContext(), "this is my Toast message!!! =)", Toast.LENGTH_LONG).show();
            }
        });

这是我设置按钮的XML代码 -

<Button
            android:id="@+id/file"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/plt"
            android:text="File" />

这会在行file.setOnClickListener(new OnClickListener() {上抛出NullPointerException。我做错了什么?

3 个答案:

答案 0 :(得分:3)

您是否在Activity的onCreate()方法中初始化Button?

如果是,请检查您是否正在致电

setContentView(R.id.yourlayoutfile);

在使用findViewById(R.id.file);

初始化按钮之前

您的错误发生是因为按钮“文件”为null,这意味着findViewById(...)未找到任何带有该ID的视图。因此原因可能是在膨胀的布局中没有这样的ID,或者您没有调用setContentView(...)

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.yourlayoutfile);

        // initialize your button here  
    }

答案 1 :(得分:1)

尝试清理项目

项目 - &gt;清理 - &gt;选择您的项目 - &gt;好的, 然后又跑了。

如果您仍面临同样的问题,可以使用其他方式设置点击操作

XML中的

<Button
        android:id="@+id/file"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/plt"

        <!--added line-->            
        android:onClick="anyName"

        android:text="File" />

然后在你的活动中删除按钮的初始化并单击listner

并使代码看起来像那样

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.id.yourlayoutfile);
}

public void anyName(View v){
Toast.makeText(getApplicationContext(), "this is my Toast message!!! =)",
   Toast.LENGTH_LONG).show();

}

希望得到这个帮助。

答案 2 :(得分:0)

如果此行上有Null指针异常:

file.setOnClickListener(new OnClickListener() 

然后它意味着您的file对象为空

确保在向其添加侦听器之前初始化文件对象。