安卓的fragment跳轉問題

最近在做安卓項目,然後就遇到了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);  
        //設置底部圖標和字體顏色  
        ...    
Q&A
1、從一個Fragment如何跳轉到一個不包含該Fragment的Activity?  
    回答:  
          Intent intent = new Intent(getActivity(), BActivity.class);  
          startActivity(intent);  
2、那麼如何從一個activity跳轉到指定的Fragment呢?  
     回答:只需要再跳轉時加上intent.putExtra("main",3);即可返回到包含指定Fragment的Activity。  
                但是需要再onCreate()中加上以下幾句代碼:  
        Intent intent = getIntent();  
        int id = intent.getIntExtra("main",1);  
        if (id == 2)  
            initTab(2);  
        else if (id == 3)  
            initTab(3);  
        else  
            initTab(1);  
     簡單來說,就是爲每個Fragment設定一個編號,然後按固定編號返回即可。這樣一來,涉及到Fragment跳轉的問題就解決了。  

















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章