Activity传递参数到Fragment -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【meiwen.anslib.com - 电脑资料】

    今天下午纠结了一天,如何把参数传递到Fragment,其实网上很多资料,

   

getActivity().getIntent().getStringExtra(getString(R.string.bloger));

    大多是上面的方法,

Activity传递参数到Fragment

。由于我的实际情况比较特殊,导致不能直接用上面的方法。

    我的Fragment attach的Activity的启动方式为singleTask,也就是说,从其他activity跳转到该activity是不会重新实例化,通过getIntent()方法也不能获取到传递过来的参数。但是,可以通过

   

protected void onNewIntent(Intent intent)

    方法中的intent对象获取到参数。但是这个intent对象不能直接传递给Fragment,最后想到的办法是,把该intent对象共享给getIntent(),如此一来,就可以直接在Fragment中调用getActivity().getIntent()获取参数了。

    Activity中的方法如下:

   

<span></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"); //统计页面	}

直接贴的项目中的代码,没有专门写demo,所以不能直接上传项目源码,

电脑资料

Activity传递参数到Fragment》(http://meiwen.anslib.com)。如果有疑问,欢迎讨论!

最新文章