假如要实现一个这样的功能,在主页面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的方法需要大家们独立创新,莫的感情啊,再见。