今天下午纠结了一天,如何把参数传递到Fragment,其实网上很多资料,
getActivity().getIntent().getStringExtra(getString(R.string.bloger));
我的Fragment attach的Activity的启动方式为singleTask,也就是说,从其他activity跳转到该activity是不会重新实例化,通过getIntent()方法也不能获取到传递过来的参数。但是,可以通过
protected void onNewIntent(Intent intent)
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"); //统计页面
}
原文:http://blog.csdn.net/brian512/article/details/42646639