Android - NullPointer创建适配器的异常

2022-09-02 23:21:30

我正在为列表视图创建一个数组适配器,一切正常,我有2个片段,操作栏顶部有2个按钮,在这2个片段之间变化。我的问题是,如果我在这些frag之间移动得太快,我会崩溃,当我打开fragOne,切换到fragTwo,然后迅速移回fragOne。fragOne 从 getActivity 上下文中抛出一个 NPE。

这是崩溃的线:

adapter = new MainFragmentDocumentAdapter(getActivity(), docsList, DocumentsFragment.this, page);

日志报告:

E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.bbb.app, PID: 17438
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
        at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
        at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:104)
        at com.bbb.app.UI.adapters.MainFragmentDocumentAdapter.<init>(MainFragmentDocumentAdapter.java:51)

任何想法,我该如何解决这个问题?


答案 1

所以基本上经过大量的检查,我发现问题在于我在另一个片段中返回到那个片段,因为我有一个听众指出那里并试图打开那个方法。

基本上我只是把它包裹在一个

if (getActivity() != null) {
    // Code goes here.
}

问题解决了。

非常感谢所有的帮助!


答案 2

如果您正在进行片段检查,则添加片段。

{
    ... 

    if (!this.isAdded()) { //this = current fragment
        return;
    }
    LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
    ...
}

推荐