Activity 跳转到指定非宿主 Fragment
来源:互联网 发布:搜狗搜索sem优化师 编辑:程序博客网 时间:2024/05/20 10:23
如图所示,MainActivity 中的 MineFragment 跳转到 LoginActivity 中,点击注册按钮,进入RegisterActivity,并将 RequestCode 也带入到 RegisterActivity,之后在 RegisterActivity 输入手机号和密码点击注册,将 RequestCode 和 ResultCode 带入 RegisterActivity2,获取验证码之后,RegisterActivity2 点击完成,跳转到 MainActivity,MainActivity 会在 onActivityResult 回调中判断 RequestCode 和 ResultCode 并跳转到 MineFragment。
MainActivity 默认是跳到第一个 Fragment,MineFragment 是在最后一个,所以要指定跳转。
看懂了解析图,就来写代码吧,从 MineFragment 中入手。
MineFragment.java
/** * 登录点击事件 * @param view */@OnClick(value = {R.id.profile_image, R.id.tv_username})public void toLogin(View view) { /** * 判断是否已经登录,若已登录,则提示,未登录,则跳转 */ User user = MyApplication.getInstance().getUser(); if (user != null) { ToastUtils.show(getContext(), "您已登录"); mImageView.setClickable(false); mTvUsername.setClickable(false); } else { Intent intent = new Intent(getActivity(), LoginActivity.class); startActivityForResult(intent, Constants.REQUEST_CODE); }}
LoginActivity.java
这里将 RequestCode = 1 传到 RegisterActivity 中
/** * 跳转到注册页面 * @param v */ @OnClick(R.id.tv_register) public void register(View v) { startActivityForResult(new Intent(this, RegisterActivity.class),1); }
RegisterActivity.java
将 RequestCode = 1 和 ResultCode = 2 传到 Register2Activity
Intent intent = new Intent(RegisterActivity.this, Register2Activity.class);intent.putExtra("phone", phone);intent.putExtra("pwd", pwd);intent.putExtra("countryCode", countryCode);startActivityForResult(intent,1);setResult(2);
Register2Activity.java
Register2Activity 跳转到 MainActivity 中,在 MainActivity 中接收 RequestCode = 1 和 ResultCode = 2 并做相应处理
//跳转到登录页面startActivity(new Intent(Register2Activity.this, MainActivity.class));
RegisterActivity 跳转成功,Register2Activity 注册完成时还要将自身 finish()
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1 && resultCode == 2) { setResult(2); finish(); }}
MainActivity.java
MainActivity 中根据 RequestCode = 1 和 ResultCode = 2 设置跳转的 Fragment
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1 && resultCode == 2) { this.gotoMineFragment(); }}private FragmentManager fmanager;private FragmentTransaction ftransaction;private void gotoMineFragment() { fmanager = getSupportFragmentManager(); ftransaction = fmanager.beginTransaction(); MineFragment mineFragment = new MineFragment(); ftransaction.replace(R.id.realtabcontent, mineFragment); ftransaction.commit();}
小疑问
我调试了程序,原来在 Register2Activity 里面写的代码是下面这个
startActivityForResult(new Intent(Register2Activity.this, MainActivity.class),1);
但是,会出现一种状况是我根本不会跳转到 MainActivity 的 onActivityResult 方法中,导致的结果就是直接到了第一个 Fragment。
实在没想通,不是应该传参进去才会回调吗?
参考:
http://blog.csdn.net/syif88/article/details/50582378
- Activity 跳转到指定非宿主 Fragment
- Activity跳转到指定Fragment实例
- android Activity跳转到指定的Fragment
- 从fragment跳转到activity , 返回到指定fragment页面
- Android activity跳转到另一个activity的指定fragment页面
- Fragment跳转到Activity
- Activity 跳转到 Fragment
- activity跳转到fragment
- 子Fragment传递数据到宿主Activity
- 从fragment跳转到activity,再返回到指定的fragment页面
- 兔子--activity跳转到fragment
- kotlin Fragment 跳转到Activity
- Android activity跳转到另一个activity的指定fragment页面
- 从一个activity跳转到一个已存在activity的指定fragment中
- Android跳转到指定Activity
- 从一个Activity跳转到主页指定fragment,再按返回能退出应用
- 如何从非Activity跳转到Activity
- Fragment跳转到activity,然后返回到fragment并且刷新该页面(activity跳转Fragment)
- linux网络编程,进程间的通信之互斥锁与条件变量
- 杭电oj1014 互质就可以了
- display:none ,inline, block, inline-block
- Go mobile(一)
- FZU1977 Pandora adventure
- Activity 跳转到指定非宿主 Fragment
- Idea git打tag
- memcached简介(转)
- 数字证书原理
- 博弈论
- JS获取当前时间,时间与时间戳之间的转换
- 【剑指Offer】面试题63:二叉搜索树的第k个结点
- 21. Merge Two Sorted Lists
- 溢出与类型提升