我正在試驗Android碎片,因此我創建了兩個碎片ListFragment
和DetailFragment
。問題是,當我點擊ListFragment
並調用DetailFragment
方法顯示ListFragment
中的選定項目時,DetailFragment
上未顯示任何結果。這裏是DetailFragment
代碼:Android碎片
private static final String DETAIL_FRAG_TAG = "detail_fragment";
private Context appContext = null;
private TextView lblItemDetail = null;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// inflate the fragment layout
View rootView = inflater.inflate(R.layout.fragments_detail_fragment, container, false);
lblItemDetail = (TextView) rootView.findViewById(R.id.lbl_itemDetail);
//at this point the TextView is not null===>see L0g.i
Log.i(DETAIL_FRAG_TAG, " ---MyDetailFragment---oncreateView()--lblItemDetail =[" + lblItemDetail + "]");
// get the fragment activity context
appContext = this.getActivity();
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
/**
* show the details of the item selected on the listFragment.
* @param itemDetail - the details of the item selected on ListFragment.
*/
public void showLstItemDetail(String itemDetail) {
if (lblItemDetail != null) {
// the View to show Text should not be Null.
lblItemDetail.setText(itemDetail);
}
//at this point calling this method shows
that the `TextView` is Null yet it's
initialized in the
oncreate() as a class member variable ---why am i
getting Null after the `oncreate` is finished.
Log.i(DETAIL_FRAG_TAG, "------showItemDetail---------msg=[" + itemDetail + "] txt=[" + lblItemDetail + "]");
}
//when I create an instance of `MYDetailFragment` and call the method to show the details of item Selected on the `DetailFragment` the `TextView` will be null. Why?
MYDetailFragment detailFrag = new MyDetailFragment();
detailFrag.showLstItemDetail("Selected List Item");
你能告訴我們如何以及何時你叫'MYDetailFragment detailFrag'?你可以c/p你所有的片段代碼? – 2013-03-01 14:52:04
您應該使用setArguments和getArguments將詳細信息傳遞給片段。您正在調用detailFrag.showLstItemDetail(「Selected List Item」)的Currenlty; - >這個函數應該在片段本身中調用。爲什麼?因爲那時片段ui尚未加載 – Tobrun 2013-03-01 15:11:28