Android尝试从空对象引用上的字段读取

时间:2015-07-11 13:15:42

标签: android

我有一个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。

2 个答案:

答案 0 :(得分:0)

这是可能的,有时候Activity会被回收,当你在Fragment中调用getActivity()时,它将返回null。因此,在致电getActivity()之前,您可以编写如下代码:

if (isAdded()) {
        tView.setDefaultNodeClickListener(((MainActivity) getActivity()).nodeClickListener2);
        ...
    }

答案 1 :(得分:0)

您从哪里访问片段中的活动字段?你应该从onAttach()开始直到onDetach()。

如果您尝试在构造函数或片段的onCreate()中过早访问它,这将解释崩溃。如果您在片段与活动分离后尝试访问它,则相同。