2017-03-23 73 views
0

我需要幫助。 我在我的Android應用程序開發的結束階段,目前開發應用程序的幾個月後,出現此錯誤神奇崩潰:應用程序崩潰與android.content.Context.getPackageName()'空對象參考

java.lang.String android.content.Context.getPackageName()' on a null object reference 

我不知道是什麼問題,但我將發佈造成崩潰的代碼:

public static void start(Context context) { 
     context.startActivity(new Intent(context, ConversationsActivity.class)); 
    } 

調用這段代碼(片段內):我已經爲最後的變化

ConversationsActivity.start(getActivity()); 

是增加的Fab ric.io(尤其是分行),並從過去的歷史提交的混帳我沒有表現什麼可以產生這種錯誤

編輯:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
at android.content.ComponentName.<init>(ComponentName.java:128) 
at android.content.Intent.<init>(Intent.java:4900) 
at com.exampleapp.views.messages.ConversationsActivity.start(ConversationsActivity.java:31) 
at com.exampleapp.views.menu.MenuFragment.onMenuMessagesClicked(MenuFragment.java:116) 
at com.exampleapp.views.menu.MenuFragment_ViewBinding$5.doClick(MenuFragment_ViewBinding.java:82) 
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22) 
at android.view.View.performClick(View.java:5637) 
at android.view.View$PerformClick.run(View.java:22429) 
at android.os.Handler.handleCallback(Handler.java:751) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6119) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
+0

請編輯您的問題併發布整個Java堆棧跟蹤。 – CommonsWare

+0

我更新了問題 – Ne0

+0

getActivity()似乎返回null。我不完全確定爲什麼。 – CommonsWare

回答

0

你的問題是,你是使用意圖錯誤。與此更換你的start()代碼:

public static void start() { 
    Intent i = new Intent(getApplicationContext, ConversationsActivity.class); 
    startActivity(i); 
} 

然後,而不是使用ConversationsActivity.start(getActivity());調用它,只需使用start();時要調用的方法。

希望這會有所幫助!

+0

感謝您的答案,但我不認爲這是解決方案,也因爲它一直工作。爲什麼ApplicationContext? – Ne0

+0

只要嘗試一下,它總是適合我。應用上下文始終是一個安全的選擇 – MrAppMachine

+0

無關男人:(但現在我意識到,相同的代碼工作與不同的活動從其他片段調用O.o我不知道發生了什麼 – Ne0

0

或者你可以這樣做:

public static void start(Activity activity) { 
    activity.startActivity(new Intent(activity, ConversationsActivity.class)); 
} 
0

您應該使用getActivity()Fragment發動Activity

From a Fragment:Context是父母活動(getActivity())

Intent intent = new Intent(getActivity(), ConversationsActivity.class); 
startActivity(intent); 

從活動:Context是當前活動(this)

Intent intent = new Intent(this, ConversationsActivity.class); 
startActivity(intent); 
+0

是我所做的,看代碼了;) – Ne0

相關問題