安卓的fragment跳转问题

来源:互联网 发布:雪湖资本 知乎 编辑:程序博客网 时间:2024/05/06 19:35

最近在做安卓项目,然后就遇到了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跳转的问题就解决了。  















                                             
0 0