NullPointerException处理在MainActivity中创建一个意图
问题描述:
我一直在寻找这几天,似乎无法找到一个特定于我的问题的线程。每次尝试向我的包中添加字符串时,我的应用都崩溃了。 我收到extras.putString(EXTRA_MESSAGE,message)的错误;NullPointerException处理在MainActivity中创建一个意图
MainActivity.java
public class MainActivity extends AppCompatActivity {
private ArrayList<String> priceGroupSpinnerItems;
public static final String EXTRA_MESSAGE = "lss.mywebsiteoffline.MESSAGE";
public String message = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spnPriceGroup = (Spinner) findViewById(R.id.price_group_spinner);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.list_price_group, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnPriceGroup.setAdapter(adapter);
message = spnPriceGroup.getSelectedItem().toString();
}
/** Called when the user taps the Go button */
public void sendMessage(View view) {
Intent mIntent;
mIntent = new Intent(this, nextActivity.class);
Bundle extras = mIntent.getExtras();
extras.putString(EXTRA_MESSAGE, message);
mIntent.putExtras(extras);
startActivity(mIntent);
}
}
logcat的
E/AndroidRuntime: FATAL EXCEPTION: main
Process: lss.mybbofflinever3, PID: 8181
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:5702)
at android.widget.TextView.performClick(TextView.java:10896)
at android.view.View$PerformClick.run(View.java:22546)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5702)
at android.widget.TextView.performClick(TextView.java:10896)
at android.view.View$PerformClick.run(View.java:22546)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Bundle.putString(java.lang.String, java.lang.String)' on a null object reference
at lss.mywebsiteoffline.MainActivity.sendMessage(MainActivity.java:59)
我曾尝试的例子只使用意图,或捆绑,并直接添加字符串putString。我可能会错过一些明显的东西。不知道在将字符串直接添加到putString方法并获得相同的错误后,我可能会在寻找什么。
答
默认情况下,Intent
没有额外功能,getExtras()
返回null。如果你想设置额外的,你需要自己创建额外套件。更换
Bundle extras = mIntent.getExtras();
与
Bundle extras = new Bundle();
或者只是呼吁Intent
的putExtra()
重载之一 - 它也将初始化临时演员的情况下,捆绑它不存在了。
+0
这是什么修复它。我一定把我的代码搞混了!谢谢@laalto! –
答
试试这个:
Intent mIntent = new Intent(this, nextActivity.class);
mIntent.putExtra(EXTRA_MESSAGE, message);
startActivity(mIntent);
'extras'可能是'null',你检查一下吗? – alfasin
@alfasin:我已经碰到过那篇文章了。至少我不太清楚(但对我来说),但laalto的回答似乎解决了我的问题。不知道这篇文章是否会让我得到相同的答案.. –