【Android】Fragment跳转系列
一、同一个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); //即可指定到某个界面
持续更新中………