Android - 在第二次尝试时从Fragment调用MainActivity方法崩溃应用程序

时间:2017-04-29 05:16:26

标签: android fragment main-activity

以下是我在Fragment页面中用于触发MainActvity.java方法的内容:

((MainActivity) getActivity()).openGallery();   

打开应用后,我第一次在片段页面中滑动,并执行此代码,IT工作。但是,当我隐藏该片段页面然后将其恢复,并再次执行该代码时,应用程序崩溃,说出类似的内容:

 Attempt to invoke virtual method 'void com.test.test7.MainActivity.openGallery()' on a null object reference

我找到的答案都没有涵盖这个问题,当它第一次有效并且第二次崩溃时。

任何帮助都是相关的。

3 个答案:

答案 0 :(得分:1)

试试这个。

isGuessed

答案 1 :(得分:0)

尝试使用该片段的上下文并执行类似

的操作
 ((MainActivity) mContext).openGallery();   

答案 2 :(得分:0)

您可以参考章节"处理片段生命周期"中的documentation。基本上代码中的某个地方,当片段未附加到活动时,您调用了((MainActivity) getActivity()).openGallery(),因此父上下文返回null。

您不应该假设活动上下文始终可用,因为片段经常被分离并重新连接。你应该

  • (如果你需要上下文)只在保证附加片段的方法中调用getContext()(参见可用片段回调的上一个链接),或者

  • 始终执行条件检查以确保(MainActivity) getActivity()在使用前不为空。