首页 > 代码库 > Activity传递参数到Fragment
Activity传递参数到Fragment
今天下午纠结了一天,如何把参数传递到Fragment,其实网上很多资料,
getActivity().getIntent().getStringExtra(getString(R.string.bloger));
大多是上面的方法。由于我的实际情况比较特殊,导致不能直接用上面的方法。
我的Fragment attach的Activity的启动方式为singleTask,也就是说,从其他activity跳转到该activity是不会重新实例化,通过getIntent()方法也不能获取到传递过来的参数。但是,可以通过
protected void onNewIntent(Intent intent)
方法中的intent对象获取到参数。但是这个intent对象不能直接传递给Fragment,最后想到的办法是,把该intent对象共享给getIntent(),如此一来,就可以直接在Fragment中调用getActivity().getIntent()获取参数了。
Activity中的方法如下:
<span style="white-space:pre"> </span>//当启动模式为singletask,重新被启动时调用 @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); int initPosition = intent.getIntExtra(getString(R.string.init_position), Constants.DEF_BLOG_TYPE.BLOGERBLOG); Log.i(TAG, "onNewIntent initPosition=" + initPosition); indicator.setCurrentItem(initPosition); getIntent().putExtras(intent); }在Fragment中获取参数的方法如下:
@Override public void onResume() { super.onResume(); Log.i(TAG, "onResume"); Activity activity = getActivity(); if (activity != null) { String bloger = activity.getIntent().getStringExtra(getString(R.string.bloger)); if (!TextUtils.isEmpty(bloger) && bloger.equals(CSDNApplication.getInstance().getCurrentBlogerID())) { blogListView.startRefresh(); // 开始刷新 } } MobclickAgent.onPageStart("BlogerBlogFrag"); //统计页面 }
Activity传递参数到Fragment
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。