Android 如何在SwipeView活动中向片段发送/接收额外信息
我试图在Android中使用带选项卡的滑动视图,我需要将一些变量传递给选项卡的片段以显示自定义内容,我的问题是我总是将捆绑设置为0,因此我认为我在从片段容器页面发送额外内容时出了问题。这是片段和包含选项卡的主片段页面的代码Android 如何在SwipeView活动中向片段发送/接收额外信息,android,android-fragments,tabs,arguments,extras,Android,Android Fragments,Tabs,Arguments,Extras,我试图在Android中使用带选项卡的滑动视图,我需要将一些变量传递给选项卡的片段以显示自定义内容,我的问题是我总是将捆绑设置为0,因此我认为我在从片段容器页面发送额外内容时出了问题。这是片段和包含选项卡的主片段页面的代码 public Fragment getItem(int position) { // getItem is called to instantiate the fragment for the given page. // Return a P
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class
// below).
prof = getIntent().getIntExtra("prof", 0);
id = getIntent().getIntExtra("id", 0);
bund = new Bundle();
bund.putInt("prof", prof);
bund.putInt("id", id);
switch (position) {
case 0:
// Text fragment activity
FragmentOne fragment = new FragmentOne();
fragment.setArguments(bund);
return fragment;
case 1:
// Gallery fragment activity
FragmentTwo fragment2 = new FragmentTwo();
fragment2.setArguments(bund);
return fragment2;
case 2:
//Audio fragment
FragmentThree fragment3 = new FragmentThree();
fragment3.setArguments(bund);
return fragment3;
}
return null;
}
而片段代码被放置在onCreateView方法中
Bundle bundle = getArguments();
if (bundle!=null){
prof = bundle.getInt("prof");
id = bundle.getInt("id");
}
我可以读取片段容器中的参数,但无法读取片段中的参数,我忘记了什么?您可以尝试使用
SharedReference
而不是Bundle
,这里:
在FragmentStatePagerAdapter中实例化SharedReference:
SharedPreference mPref = mContext.getSharedPreferences("myPreference",
Context.MODE_PRIVATE);
将prof
和id
存储到mPref
:
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class
// below).
prof = getIntent().getIntExtra("prof", 0);
id = getIntent().getIntExtra("id", 0);
// store value in mPref
mPref.putInt("prof", prof);
mPref.putInt("id", id);
// commit changes
mPref.commit();
switch (position) {
case 0:
// Text fragment activity
FragmentOne fragment = new FragmentOne();
return fragment;
case 1:
// Gallery fragment activity
FragmentTwo fragment2 = new FragmentTwo();
return fragment2;
case 2:
//Audio fragment
FragmentThree fragment3 = new FragmentThree();
return fragment3;
}
return null;
}
检索任何片段的onCreateView()
内的值:
SharedPreference mPrefFrag = getActivity().getSharedPreferences("myPreference",
Context.MODE_PRIVATE);
int prof = mPrefFrag.getInt("prof",0);
int id = mPrefFrag.getInt("id",0);