安卓的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跳转的问题就解决了。  

















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