2017-10-28 117 views
-2

我一直在尋找這幾天,似乎無法找到一個特定於我的問題的線程。每次嘗試向我的包中添加字符串時,我的應用都崩潰了。 我收到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方法並獲得相同的錯誤後,我可能會在尋找什麼。

+0

'extras'可能是'null',你檢查一下嗎? – alfasin

+0

@alfasin:我已經碰到過那篇文章了。至少我不太清楚(但對我來說),但laalto的回答似乎解決了我的問題。不知道這篇文章是否會讓我得到相同的答案.. –

回答

1

默認情況下,Intent沒有額外功能,getExtras()返回null。如果你想設置額外的,你需要自己創建額外套件。更換

Bundle extras = mIntent.getExtras(); 

Bundle extras = new Bundle(); 

或者只是呼籲IntentputExtra()重載之一 - 它也將初始化臨時演員的情況下,捆綁它不存在了。

+0

這是什麼修復它。我一定把我的代碼搞混了!謝謝@laalto! –

0

試試這個:

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