2016-07-24 112 views
0

我一直在關注官方Android Dev站點上的Android Studio培訓教程,以創建一個簡單的「消息傳遞」應用程序(link to tutorial)。我達成了「構建我的第一個應用程序」的結尾。當我點擊「發送按鈕」應用程序崩潰時,消息的內容是無關緊要的。我已經在我的手機和模擬器上試過了。 這裏的錯誤代碼:按鈕導致崩潰

E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.john.myfirstapp, PID: 3180 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.john.myfirstapp/com.john.myfirstapp.DisplayMessageActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5417) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference 
    at com.john.myfirstapp.DisplayMessageActivity.<init>(DisplayMessageActivity.java:16) 
    at java.lang.Class.newInstance(Native Method) 
    at android.app.Instrumentation.newActivity(Instrumentation.java:1067) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
    at android.app.ActivityThread.-wrap11(ActivityThread.java)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:148)  
    at android.app.ActivityThread.main(ActivityThread.java:5417)  
    at java.lang.reflect.Method.invoke(Native Method)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Android Studio中也給了我在這條線的建議:

getSupportActionBar()setDisplayHomeAsUpEnabled(真);

它指出:

方法調用 'getSupportActionBar()setDisplayHomeAsUpEnabled(真)' 可能會產生 '顯示java.lang.NullPointerException'

我相當肯定,它不是像捲曲或缺少報價那樣的小錯誤。

任何幫助表示讚賞:)

+1

崩潰發生在這裏:DisplayMessageActivity.java線16 ...份額DisplayMessageActivity.java源代碼 – W0rmH0le

回答

0

根據與實例,你都用過,你必須做到:

Intent intent = getIntent(); 
String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE); 

所以,也許,你沒有正常啓動活動,這意圖爲空。 ..所以,嘗試添加一個空指針檢查:

Intent intent = getIntent(); 
String message = ""; 
if(intent != null) 
    message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE); 

而且,與DisplayMessageActivity和MainActivity代碼更新您的問題。然後,我可以幫你妥善解決這個問題。

+0

從其他來源尋找一些幫助(和失敗)後,我只是完全改寫了碼。它現在可以工作,但感謝您的建議! –

0

看看下面的log

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference 
at com.john.myfirstapp.DisplayMessageActivity.<init>(DisplayMessageActivity.java:16) 

這意味着你正試圖從一個null對象在行16文件DisplayMessageActivity.java調用函數getStringExtra。您應該檢查以避免該行中的NPE

0

當應用程序嘗試在需要對象的情況下使用null時,拋出空指針異常。這些包括:

  1. 調用空對象的實例方法。
  2. 訪問或修改空對象的字段。
  3. 將null的長度當作數組。
  4. 訪問或修改null的插槽,就好像它是一個數組。
  5. 將null拋出,就像它是Throwable值一樣。

應用程序應拋出此類的實例來指示其他非法使用null對象。

你可以找到更多關於這個link. Click Here