最近在做安卓項目,然後就遇到了fragment的問題。
之前做項目的代碼拿出來看,發現和這一次的做法不太一樣,但在編碼過程中就出現了一些跳轉的問題。
之前實現fragment是利用FragmentActivity和PageView實現的,這一次就直接繼承Fragment,其實思路還是一樣的。
實現fragment的方法很多,下面是我這次項目採用的方法:
首先在一個Activity中添加幾個Fragment,在onCreate()中初始化默認Fragment,同時藉助FragmentManager來進行事務提交,最後再添加點擊事件。
//添加顯示fragment
private void addOrShowFragment(FragmentTransaction transaction, Fragment fragment){
if(currentFragment == fragment)
return;
if (!fragment.isAdded()){
transaction.hide(currentFragment).add(R.id.content_layout,fragment).commit();
}else {
transaction.hide(currentFragment).show(fragment).commit();
}
currentFragment = fragment;
}
//初始化底部tab
private void initTab(int id) {
switch (id){
case 1:
if (homeFragment == null)
homeFragment = new homeFragment();
if (!homeFragment.isAdded()) {
//提交事務
getSupportFragmentManager().beginTransaction().add(R.id.content_layout, homeFragment).commit();
//記錄當前Fragment
currentFragment = homeFragment;
//設置底部圖片文本變化
ivHome.setImageResource(R.drawable.home_orange);
}
break;
}
}
//點擊事件
public void onClick(View v) {
switch (v.getId()){
case R.id.rl_home:
clickHomeLayout();
break;
}
//點擊主頁後的事件響應
private void clickHomeLayout(){
if (homeFragment == null)
homeFragment = new homeFragment();
addOrShowFragment(getSupportFragmentManager().beginTransaction(),homeFragment);
//設置底部圖標和字體顏色
...