getApplicationContext导致NullPointerException

时间:2017-05-14 08:59:09

标签: java android nullpointerexception

我刚刚开始尝试在Android Studio中学习开发,当我试图让我的第一个应用程序工作时(我也是stackoverflow的新手,所以如果我提出这个帖子的方式不满意那么sry),我遇到了一个无效的看法。 我只想制作一个按钮,当我点击它时显示一条短信(吐司)。 这可能是一个典型的新手错误,但我似乎无法找出问题究竟是什么。请有人开导我吗?

据我所知,错误讯息的相关部分是:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference

下面是代码:

public class FirstActivity extends AppCompatActivity {

    private static FirstActivity instance;



    Context context = getApplicationContext();
    CharSequence text = "A text that appears for a short time";
    int duration = Toast.LENGTH_SHORT;

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


    }

    public void buttonclick(View view){
        Toast toast1 = Toast.makeText(context,text,duration);

    }

}

和xml:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.rayaqin.myfirstandroidapp.FirstActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="259dp"
        android:text="Press Me"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Me"
        tools:layout_editor_absoluteX="-498dp"
        tools:layout_editor_absoluteY="527dp"
        android:onClick="buttonclick"/>

</android.support.constraint.ConstraintLayout>

3 个答案:

答案 0 :(得分:2)

getApplicationContext()是一个实例方法,您尝试从静态上下文中调用它。

只需将其移至onCreate()

Activity不需要应用Context本身就可以扩展它。

中使用this
Toast toast1 = Toast.makeText(this,text,duration);

并显示它

Toast.makeText(this,text,duration).show();

答案 1 :(得分:0)

您应该在onCreate()中执行该任务。

并使用context = this;

答案 2 :(得分:-2)

只需用

替换你的祝酒词
Toast toast1 = Toast.makeText(this,text,duration).show();