fragment 中使用 Toast經常報空指針的原因與解決

在fragment中使用Toast是用的非常多的,但是總是頻繁的報空指針

Toast.makeText(getActivity(), "click", Toast.LENGTH_SHORT).show();

原因

只是因爲getActivity()很容易爲null,因爲fragment裏有一個initstate方法,在activity被替換掉的時候mActivity便賦值給了null ,而這個方法會在replace操作的時候執行,意思就是替換fragment的時候被替換的fragment會執行initstate()方法,會把原先的mActivity重新賦值爲null,如果此時涉及到異步操作並需要context的話,便會拋出空指針異常,因爲在異步操作完成前fragment已經執行initstate()了,mActivity已經被重新賦值爲null了,所以如果此時調用getactivity的話會拋異常。

解決

重寫oncreat()方法 ,在裏面初始化context.

private Context mContext;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.mContext = getActivity();
    }
Toast.makeText(mContext, "click", Toast.LENGTH_SHORT).show();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章