我有一个Activity
Fragments
使用ViewPager
,有时用户会向我发送一些我不理解的崩溃报告。
我无法产生这种崩溃,大部分用户都没有任何问题。
崩溃日志说:
java.lang.NullPointerException: Attempt to read from field 'com.mehdok.views.treeview.TreeNode$TreeNodeClickListener com.mehdok.mafatih.MainActivity.nodeClickListener2' on a null object reference
nodeClickListener2
是我的主要活动:
public TreeNode.TreeNodeClickListener nodeClickListener2 = new TreeNode.TreeNodeClickListener()
{
@Override
public void onClick(TreeNode node, Object value)
{
TreeViewHolderNoBorder.TreeViewItem item = (TreeViewHolderNoBorder.TreeViewItem) value;
if(node.isLeaf() && !item.nodeNavUri.equals(""))
{
openNodePage2(item);
}
}
};
在碎片中我使用它是这样的:
tView.setDefaultNodeClickListener(((MainActivity) getActivity()).nodeClickListener2);
如何防止此次崩溃?
提前tnx。答案 0 :(得分:0)
这是可能的,有时候Activity会被回收,当你在Fragment中调用getActivity()
时,它将返回null。因此,在致电getActivity()
之前,您可以编写如下代码:
if (isAdded()) {
tView.setDefaultNodeClickListener(((MainActivity) getActivity()).nodeClickListener2);
...
}
答案 1 :(得分:0)
您从哪里访问片段中的活动字段?你应该从onAttach()开始直到onDetach()。
如果您尝试在构造函数或片段的onCreate()中过早访问它,这将解释崩溃。如果您在片段与活动分离后尝试访问它,则相同。