我有这个MainActivity会立即崩溃我的应用程序。为什么会这样?我尝试用类型为Context Context aContext = getApplicationContext();
的对象替换参数的“MainActivity.this”部分,遵循Google的参考示例,结果完全相同。
我做错了什么?
非常感谢。
package com.nactus.questionme;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button mMadridButton;
private Button mWrongButton;
private Toast aToast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// target the buttons
mMadridButton = (Button) findViewById(R.string.button_madrid);
mWrongButton = (Button) findViewById(R.string.button_wrong);
// set event listeners
mMadridButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = getApplicationContext();
// my code goes here
aToast = Toast.makeText(context, "test", Toast.LENGTH_SHORT);
aToast.show();
}
});
mWrongButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = getApplicationContext();
// my code goes here
aToast = Toast.makeText(context, "test", Toast.LENGTH_SHORT);
aToast.show();
}
});
}
}
更新代码以反映建议:同样崩溃
答案 0 :(得分:1)
而不是
R.string.buttonWrong
(findViewById的参数)应该是:
R.id.buttonWrong
因为它搜索R.java文件,其中存储了用XML文件编写的元素(按钮,开关,布局)的所有信息。
答案 1 :(得分:0)
您应该使用getApplicationContext()
功能。
例如,
Context context = getApplicationContext();
aToast = Toast.makeText(context, R.string.incorrect_toast, Toast.LENGTH_SHORT);
aToast.show();
阅读this。
答案 2 :(得分:0)
您可以从logcat提供错误日志。但我假设您的应用程序立即崩溃而不是按下按钮时崩溃。 如果是这种情况,则可能是由于错误的id被提供给findViewById方法而导致的NullPointerException。请检查提供的ID是否属于activity_main布局。 设置单击侦听器时,mMadridButton或mWrongButton都为null。因此它崩溃了。 Toast部分似乎没问题!
答案 3 :(得分:0)
请勿使用此代码
private Toast aToast;
aToast = Toast.makeText(context, "test", Toast.LENGTH_SHORT);
aToast.show();
而是使用此单行代码
Toast.makeText(getBaseContext(),"test",Toast.LENGTH_SHORT).show();