以下是我在Fragment页面中用于触发MainActvity.java方法的内容:
((MainActivity) getActivity()).openGallery();
打开应用后,我第一次在片段页面中滑动,并执行此代码,IT工作。但是,当我隐藏该片段页面然后将其恢复,并再次执行该代码时,应用程序崩溃,说出类似的内容:
Attempt to invoke virtual method 'void com.test.test7.MainActivity.openGallery()' on a null object reference
我找到的答案都没有涵盖这个问题,当它第一次有效并且第二次崩溃时。
任何帮助都是相关的。
答案 0 :(得分:1)
试试这个。
isGuessed
答案 1 :(得分:0)
尝试使用该片段的上下文并执行类似
的操作 ((MainActivity) mContext).openGallery();
答案 2 :(得分:0)
您可以参考章节"处理片段生命周期"中的documentation。基本上代码中的某个地方,当片段未附加到活动时,您调用了((MainActivity) getActivity()).openGallery()
,因此父上下文返回null。
您不应该假设活动上下文始终可用,因为片段经常被分离并重新连接。你应该
(如果你需要上下文)只在保证附加片段的方法中调用getContext()
(参见可用片段回调的上一个链接),或者
始终执行条件检查以确保(MainActivity) getActivity()
在使用前不为空。