簡體   English   中英

Android嘗試從空對象引用中的字段讀取

[英]Android Attempt to read from field on a null object reference

我有一個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);

我該怎么做以防止此崩潰?

提前發送。

這是可能的,有時Activity將被回收,當您在Fragment中調用getActivity()時,它將返回null。 因此,在調用getActivity() ,可以編寫如下代碼:

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

您從哪里訪問片段中的活動字段? 您應該從onAttach()到onDetach()開始執行此操作。

如果您試圖像在構造函數中或片段的onCreate()中那樣過早地訪問它,這將解釋崩潰。 如果您將片段從活動中分離后嘗試訪問它,則相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM