处理在MainActivity

时间:2017-10-28 15:58:43

标签: java android android-intent nullpointerexception bundle

我已经对此进行了几天的调查,但似乎无法找到针对我的问题的线索。每次我尝试将字符串添加到我的包中时,我的应用程序都会崩溃。 我在extras.putString(EXTRA_MESSAGE,message)中收到错误;

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)

我尝试过只使用intent或bundle,并直接向putString添加字符串的示例。我可能会遗漏一些明显的东西。在将字符串直接添加到putString方法并获得相同的错误后,不确定我可能在寻找什么。

2 个答案:

答案 0 :(得分:1)

默认情况下,Intent没有额外内容,getExtras()返回null。如果你想设置额外的东西,你需要自己创建额外的包。取代

Bundle extras = mIntent.getExtras();

Bundle extras = new Bundle();

或者只是调用putExtra()上的Intent重载之一 - 它也会初始化附加组件,以防它已经存在。

答案 1 :(得分:0)

试试这个:

Intent mIntent = new Intent(this, nextActivity.class);
mIntent.putExtra(EXTRA_MESSAGE, message);
startActivity(mIntent);