Error inflating class fragment

后端 未结 30 2669
长发绾君心
长发绾君心 2020-11-22 14:38

I get the Error

Unable to start activity ComponentInfo{de.androidbuch.activiti/de.androidbuch.activiti.task.Activity}: android.view.InflateException: Binar         


        
30条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-11-22 14:46

    The exception android.view.InflateException: Binary XML file line: #... Error inflating class fragment might happen if you manipulate with getActivity() inside your fragment before onActivityCreated() get called. In such case you receive a wrong activity reference and can't rely on that.

    For instance the next pattern is wrong:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) 
    {
        final View view = inflater.inflate(R.layout..., container, false);
    
        Button button = getActivity().findViewById(R.id...);
        button.setOnClickListener(...); - another problem: button is null
    
        return view;
    }
    

    Correct pattern #1

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) 
    {
        final View view = inflater.inflate(R.layout..., container, false);
    
        Button button = view.findViewById(R.id...);
        button.setOnClickListener(...);
    
        return view;
    }
    

    Correct pattern #2

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    
        Button button = getActivity().findViewById(R.id...);
        button.setOnClickListener(...);
    }
    

提交回复
热议问题