如果大家有遇到这个问题 说明你来对了 楼主我可是踩了无数的坑,花了几天的时间才把这篇文章写下
现在App的模式一般都是Activity中多Fragment的模式 所以可能会有这种需求 就是Activity中需要跳转到Fragment中的情况
首先 MainActivity中有4个Fragment(FragementA,FragmentB,FragmentC,FragmentD ) 其中项目有需求 需要ActivityA
跳转到FragmentA 中 有的人就会说了 很简单吗 直接跳转到FragmentA中就可以了撒。
那我就直接呵呵你一脸 要是这么简单
我需要写一遍文章来记录不 既然出现了Fragment 那肯定需要FragmentManager 和FragmentTransaction,一个是Fragment管理器一个Fragment开启事物的。
因此大部分网上的资料都是这样叫你这样的写法:
FragmentManager fm=getSupportFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
xxFragment xx=new xxFragment();
ft.replace(R.ic.content,xx);
ft.commit();
我之前也是这么做的 发现老是报id 找不到 所以我放弃了 后面知道原因了 嘿嘿 留个悬链;
所以我就换了一种思路 直接由Activity中跳转到MainActivity 然后通过MainActivity中来控制FragmentA的add或者replace();
Intent intent = new Intent(getActivity(), MainActivity.class);
intent.putExtra("id", 1);
startActivity(intent);
getActivity().finish();
int id = intent.getIntExtra("id", 0);
if (id == 1) {
tb.switchContent(homeFragment);
}
恩 这个页面我传了一个ID
@Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
int id = intent.getIntExtra("id", 0);
if (id == 1) {
tb.switchContent(homeFragment);
}
}
FragmentManager fm=getSupportFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
xxFragment xx=new xxFragment();
ft.replace(R.ic.content,xx);
ft.commit();
哈哈 其实网上的资料是没有错了 只是之前我理解错了 这个ID 是MainActivity中的 ID