一、同一个Activity下Fragment之间相互跳转(含带参数)
Fragment1跳转到Fragment2中
1.封装一个方法
这样封装是方便一个Activity下有多个Fragment来回跳转
public interface RegisterTrigger {
void triggerView(Fragment fragment);
}
2.当前Activity继承RegisterTrigger
public class RegisterActivity extends Activity implements RegisterTrigger{
private Fragment mCurFragment;//表示当前Fragment
}
3.在当前Acticity中复写triggerView方法
@Override
public void triggerView(Fragment fragment) {
//重新赋值当前正在显示的Fragment
mCurFragment = fragment;
//切换显示
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.lay_container, fragment)
.commit();
}
4.在Fragment1中执行跳转方法
首先得到RegisterTrigger
private RegisterTrigger trigger;
@Override
public void onAttach(Context context) {
super.onAttach(context);
trigger = (RegisterTrigger) context;
}
然后执行跳转
RegisterPersonageFragment fragment = new RegisterPersonageFragment();
trigger.triggerView(fragment);
如果带参数的话
RegisterPersonageFragment fragment = new RegisterPersonageFragment ();
Bundle args=new Bundle();
args.putString("mobile",mobile);
fragment.setArguments(args);
trigger.triggerView(fragment);
以上方法就已经完成跳转,如果带参数的话,需要在要跳转的Fragment中接收参数
5.在Fragment2接收跳转时的参数
@Override
protected void initArgs(Bundle bundle) {
super.initArgs(bundle);
if (getArguments() != null) {
mobile = getArguments().getString("mobile");
Application.showToast(mobile);
}
}
二、A(activity)跳转到B(activity)下的Fragment(含带参数)
第一种:B(Activity)下Viewpager的Fragment,A(activity)把值传给B(activity)下的Fragment。
A(activity)中:
Intent intent = new Intent();
intent.putExtra("title", title);
intent.setClass(context, B(activity).class);
context.startActivity(intent);
B(activity)中:
//接收参数
title = getIntent().getStringExtra("title");
//把参数传给fragment
B(Fragment) fragment = new B(Fragmnt)();
Bundle args = new Bundle();
args.putString("html", html);
fragment.setArguments(args);
fragments.add(fragment);
如果想设置指定显示Viewpager下的fragment
viewPager.setCurremtItem(page); //即可指定到某个界面
持续更新中………