簡體   English   中英

空對象引用上的android.content.Context.getPackageName()導致應用崩潰

[英]app crash with android.content.Context.getPackageName()' on a null object reference

我需要幫助。 我正處於我的android應用程序開發的最后階段,經過幾個月的開發,該應用程序因以下錯誤而異常崩潰:

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());

我所做的最后更改是添加Fabric.io(尤其是Branch),並且根據git上一次提交的歷史記錄,我什么都沒有顯示,不會產生此錯誤

編輯:

 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)

或者您可以這樣做:

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

您應該使用getActivity()Fragment啟動一個Activity

從片段開始: Context是父活動(getActivity())

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

來自活動: Context是當前活動(this)

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

您的問題是您使用的意圖錯誤。 用以下代碼替換您的start()代碼:

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

然后,而不是使用ConversationsActivity.start(getActivity()); 要調用它,只需使用start(); 當您想調用該方法時。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM