getActivity() returns null in Fragment function

后端 未结 15 1902
别那么骄傲
别那么骄傲 2020-11-22 07:28

I have a fragment (F1) with a public method like this

public void asd() {
    if (getActivity() == null) {
        Log.d(\"yes\",\"it is null\");
    }
}
         


        
15条回答
  •  隐瞒了意图╮
    2020-11-22 08:08

    Do as follows. I think it will be helpful to you.

    private boolean isVisibleToUser = false;
    private boolean isExecutedOnce = false;
    
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_my, container, false);
        if (isVisibleToUser && !isExecutedOnce) {
            executeWithActivity(getActivity());
        }
        return root;
    }
    
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        this.isVisibleToUser = isVisibleToUser;
        if (isVisibleToUser && getActivity()!=null) {
            isExecutedOnce =true;
            executeWithActivity(getActivity());
        }
    }
    
    
    private void executeWithActivity(Activity activity){
        //Do what you have to do when page is loaded with activity
    
    }
    

提交回复
热议问题