程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> tab-一條關於安卓開發用ActionBar實現Tab導航的問題

tab-一條關於安卓開發用ActionBar實現Tab導航的問題

編輯:編程綜合問答
一條關於安卓開發用ActionBar實現Tab導航的問題

@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的位置。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved