fragment getActivity() is null

发布时间:2022-03-10 12:45:21

在开发项目管理系统android版时,首页使用了tab, 这样就会使用到fragment,但是在点击tab时,总是会遇到getActivity为null 最后发现 在点击切换tab过快时,就会出现为null的情况

其实就是在onAttach时,fragment与activity关联,这时getActivity可以取到值不会空 但是我们切换完取消联联后 getActivity()这个值就取不到了

这时候fragment中还有一些操作,比如异步加载数据 还需要用到getActivity(),这时就会报空指针

解决方法是在onAttach将activity赋到fragment的内部变量中

import android.app.Activity;
import android.content.Context;

import androidx.fragment.app.Fragment;

public class DemoFragment extends Fragment {
    private Activity fromActivity;
    public Activity getFromActivity() {
        return fromActivity;
    }

    public void setFromActivity(Activity fromActivity) {
        this.fromActivity = fromActivity;
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if(null!=context){
            setFromActivity((Activity) context);
        }
    }

}

Card image cap
应用宝
Card image cap
APP STORE
Card image cap
应用宝
Card image cap
小米