大家好,又见面了,我是你们的朋友全栈君。
最近做的一个项目,突然出现了这个问题,
Activity 中有四个fragment,分别是 first, two, three, four,默认显示的是fragment a。在开发过程中,first中 跳转到另一个Activity ,将这个外部Activity命名为B吧...
我需要从first中跳转到B中,完成一些设置,然后再从B中的返回按钮回到three,three中也有一个viewpager(1,2,3),需要跳转到3。但是使用startActivity()方法的结果是:可以实现从first到B的跳转,但是从B跳到three出现了错误。苦思冥想一整天,找了好多博客试了也没有解决。第二天早上灵光一闪,改了几个值,突然就跑通了。下面就分享一下这个案例。
首先是在B的跳转到Activity,不多解释,直接上代码
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent();
i.setClass(BActivity.this, Activity.class);
//一定要指定是第几个pager,因为要跳到ThreeFragment,这里填写2
i.putExtra("id",2);
startActivity(i);
}
});
跳转之后就是在Activity中,在这里跳转到three,这里重写了onResume()方法
相信有这个错误的童鞋一定都找过很多案例,这里就不多做解释了,直接上代码
//activity跳转到fragment
@Override
protected void onResume() {
int id = getIntent().getIntExtra("id", 0);
if (id == 2) {
Fragment fragmen = new ThreeFragment();
FragmentManager fmanger = getSupportFragmentManager();
FragmentTransaction transaction = fmanger.beginTransaction();
transaction.replace(R.id.viewpager, fragmen);
transaction.commit();
mViewPager.setCurrentItem(2);//
//帮助跳转到指定子fragment
Intent i=new Intent();
i.setClass(RadioActivity.this,ThreeFragment.class);
i.putExtra("id",2);
}
super.onResume();
}
最后是在ThreeFragment中接收,上代码
@Override
public void onResume() {
int id = getActivity().getIntent().getIntExtra("id", 0);
if(id==2){
vp.setCurrentItem(2);
}
super.onResume();
}
这样就是全部的代码了。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/144030.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...