1. 程式人生 > >Fragment中用getActivity獲取上下文物件時,可能為null

Fragment中用getActivity獲取上下文物件時,可能為null

問題分析:
在fragment向activity傳值時需要使用onAttach方法,由於onAttach(activity,Activity):void已被棄用,只能用onAttach(contex,Contex):void,但是在API<23時並不會去呼叫此方法,即會導致程式崩潰(此為google一個bug)。

解決辦法:

@SuppressWarnings("deprecation")
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        this
.activity = (FragmentActivity) activity; }

注:直接在onAttach中把上下文物件取出來,儘量避免使用getActivity().在測試的時候,在5.0的手機上測試,發現無論是onAttach的兩個方法都初始化了,並沒有出現在API小於23的情況下onAttach(Context   context)沒有呼叫的情況。最後經過查詢資料,當繼承的Frament為support.v4.app.Fragment時,兩個方法都會呼叫。當Fragment為android.app.Fragment時,會出現上述問題。