0
我有一個使用選項卡的項目活動(MainActivity),每個選項卡啓動一個片段(MyFragment)。這些片段沒有在項目中實現,而是在引用的庫項目中實現。如何在項目中的活動和庫中的片段之間傳遞簡單的對象
所以我想從活動的片段通過一個簡單的對象:
private MySimpleClass myObject = new MySimpleClass();
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
static final String KEY = "simpleObject";
final ActionBar actionBar = getActionBar();
Bundle args = new Bundle();
switch(tab.getPosition()) {
case 0:
fragment = new MyFragment();
args.put??????(KEY, myObject);
fragment.setArguments(args);
fragmentTransaction.add(R.id.fragmentContent, fragment, "tab0_tag");
break;
. . .
}
}
如果Fragment
不會是在圖書館,我會繞過Bundle
機制,只需使用一個本地方法:
m = ((MainActivity)getActivity()).getMyObject();
但這並不從庫中的代碼片段工作,因爲它不承認MainActivity
,因此不能投給它。
我也在控制圖書館項目。我嘗試了你的建議,但它沒有編譯,出現以下錯誤(儘管它讀作警告是一個錯誤)'避免片段中的非默認構造函數:使用默認的構造函數加上Fragment#setArguments(Bundle)而不是' – ilomambo 2013-05-09 18:58:11
雖然在project-> clean之後,錯誤/警告消失了!偉大的建議! – ilomambo 2013-05-09 19:01:29
嗯,是的,這可能不是一個好主意畢竟:http://stackoverflow.com/questions/9245408/best-practice-for-instantiating-a-new-android-fragment – balpha 2013-05-10 09:20:36