我想創建一個樣板文件。我不斷收到一個空引用錯誤,雖然當我嘗試設置我RecyclerView的LayoutManager的:爲什麼我的活動上下文在我的片段中爲空?
Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
下面是我稱之爲得到錯誤的順序:
Main.class:
public class PagerAdapter extends FragmentPagerAdapter {
...
@Override
public Fragment getItem(int position){
switch(position){
default:
return new WhatsNew();
}
}
}
WhatsNew.class:
public class WhatsNew extends Base {
private LayoutInflater mInflater;
private Handler mHandler = new Handler();
private RecyclerView.LayoutManager mLayoutManager;
@Override
public void init() {
mInflater = LayoutInflater.from(mContext);
mLayoutManager = new LinearLayoutManager(mContext);
mDataView.setLayoutManager(mLayoutManager); //<-- Where the null reference is
}
@Override
public void doWork() {
WhatsNewAdapter mAdapter = new WhatsNewAdapter();
mDataView.setAdapter(mAdapter);
...
}
...
}
個
Base.class:
public class Base extends Fragment {
public View mView;
public RecyclerView mDataView;
public ProgressBar mProgressBar;
public Context mContext;
public Base() { }
@Override
public void onAttach(Activity mActivity) {
mContext = mActivity;
init();
doWork();
}
@Override
public View onCreateView(LayoutInflater _i, ViewGroup _vg, Bundle savedInstanceBundle){
mView = _i.inflate(R.layout.f_base, null);
mDataView = (RecyclerView) mView.findViewById(R.id.data);
mProgressBar = (ProgressBar)mView.findViewById(R.id.loading);
return mView;
}
public void init() { }
public void doWork() { }
}
我從here讀,我應該重寫onAttach(Activity activity)
確保上下文不爲空,但是從錯誤,它仍然似乎是空。任何人都知道爲什麼我會偶然得到這個錯誤,或者對我應該如何設置我的樣板碎片有更好的建議?對不起,如果代碼看起來不好,我想更好地學習使用片段。 :)
嘗試調用'的init()'和'的doWork()'在任一onCreateView()或'onViewCreated()' – EpicPandaForce 2014-10-30 15:20:35