应用程序崩溃与空对象引用上的android.content.Context.getPackageName()'

问题描述 投票:1回答:3

我需要帮助。我正处于我的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)
java android android-context
3个回答
2
投票

或者你可以这样做:

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

2
投票

你应该使用getActivity()Activity发射一个Fragment

从片段:Context是父母活动(getActivity())

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

来自活动:Context是当前活动(this)

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

1
投票

你的问题是你使用了错误的意图。用这个替换你的start()代码:

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

然后,而不是使用ConversationsActivity.start(getActivity());来调用它,只需要在调用方法时使用start();

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.