Android底部fragment互相跳转

假如要实现一个这样的功能,在主页面MainActivity创建了四个底部Fragment,ABCD,点击B的时候有个按钮想要实现跳转D页面,可以这样实现。
首先要保证当前Activity启动模式为singleTask,详细查看 https://www.jianshu.com/p/bd1cfc31b035
在MainActivity中重写onNewIntent方法

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    checkToggleMenu();// 切换
}
/**
 * 切换(从activity跳转回来)
 */
private void checkToggleMenu(){

    int keyTo = getIntent().getIntExtra(KEY_ACTION, -1);
    if(keyTo != -1)
    {
        btns[preBtnIndex].setSelected(false);
        btns[keyTo].setSelected(true);
        try {
            if (mFragments[keyTo] == null) {
                mFragments[keyTo] = (Fragment) AppConfig.MAIN_TAB_FRAGMENTS[keyTo].newInstance();
            }
            // 切换内容
            switchContent(mFragments[mPrevious],
                    mFragments[keyTo]);
            mPrevious = keyTo;
        }
        catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        preBtnIndex = keyTo;
    }
}

我知道大家看不懂我这个返回跳转的方法是什么意思,其实这就是一个选择位置fragment的方法
大家可以根据自己的使用习惯来修改,只需要拿回它返回的状态数字就可以了,接下来是最主要的一个方法

Intent intent = AppIntent.getMainActivity(mContext);
intent.putExtra(MainActivity.KEY_ACTION, X);  //这个X就是当前fragment的索引
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

好了,最后要靠自己实现了,实现操作是可以用的,麻烦就在于切换fragment的方法需要大家们独立创新,莫的感情啊,再见。

你可能感兴趣的:(Android)