@Override
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
Fragment fragment = new DummyFragment();
//用於向fragment傳入參數
Bundle argsBundle = new Bundle();
argsBundle.putInt(DummyFragment.ARG_SELECTION_NUMBER, arg0.getPosition()+1);
//向fragment傳入參數
fragment.setArguments(argsBundle);
//獲取fragmenttransaction對象
FragmentTransaction fTransaction = getSupportFragmentManager().beginTransaction();
//使用fragment代替該activity中的container組件
fTransaction.replace(R.id.container, fragment);
fTransaction.commit();
}
在這段代碼中,為什麼要使用Bundle對象向fragment傳入參數?我直接就定義一個FragmentTransaction對象,然後調用replace(--)和commit()方法有沒有問題?
還有, argsBundle.putInt的參數DummyFragment.ARG_SELECTION_NUMBER, arg0.getPosition()+1這是什麼意思?
1、在這段代碼中,為什麼要使用Bundle對象向fragment傳入參數?
使用Bundle向Fragment傳入參數,Fragment可以在初始化的時候通過getArguments()獲取傳入的數據,就像啟動一個Activity的時候可以putExtra("data", bundel)來傳入參數一樣。
2、我直接就定義一個FragmentTransaction對象,然後調用replace(--)和commit()方法有沒有問題?
有問題。你怎麼直接定義一個FragmentTransaction對象?它是抽象類。應該使用FragmentTransaction fTransaction = getSupportFragmentManager().beginTransaction(); 來獲取FragmentTransaction實例。
3、argsBundle.putInt的參數DummyFragment.ARG_SELECTION_NUMBER, arg0.getPosition()+1這是什麼意思?
第一個參數是key,第二個參數是value。Fragment可以在初始化的時候通過getArguments()獲得Bundle,然後根據key獲取值。此處value:arg0.getPosition()+1表示此Fragment的位置。