我刚刚开始尝试在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>
答案 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();