2017-03-23 66 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

相关问题