ActivityパラメータをFragmentに渡す
1731 ワード
今日の午後、パラメータをどのようにFragmentに伝えるかに悩んでいましたが、実はネット上には多くの資料があります.
ほとんどが上記の方法です.私の実際の状況が特殊なので、上記の方法を直接使うことができません.
私のFragment attachのActivityの起動方式はsingleTaskです.つまり、他のactivityからこのactivityにジャンプしても再インスタンス化されず、getIntent()メソッドで伝達されたパラメータも取得できません.ただし、
メソッドのintentオブジェクトはパラメータを取得します.しかし、このintentオブジェクトをFragmentに直接渡すことはできず、最後に考えられる方法は、そのintentオブジェクトをgetIntent()に共有することで、FragmentでgetActivity()を直接呼び出すことができる.getIntent()はパラメータを取得しました.
Activityの方法は次のとおりです.
直接貼ったプロジェクトのコードは、demoを専門に書いていないので、プロジェクトのソースコードを直接アップロードすることはできません.もし疑問があれば、討論を歓迎します!
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"); //
}
直接貼ったプロジェクトのコードは、demoを専門に書いていないので、プロジェクトのソースコードを直接アップロードすることはできません.もし疑問があれば、討論を歓迎します!