我在导航抽屉中有两个片段ListNav和SwipeNav。 ListNav显示String数组的数据列表视图。 SwipeNav将数据显示为来自字符串数组的相同数据的滑动视图。我能够将ListNav中的片段替换为SwipeNav。字符串数组数据显示“A到Z”。
我的问题是当我点击ListNav(假设B)中的列表时,然后SwipeNav(替换片段)显示从开始的滑动视图(意味着A)。假设,如果我通过Fragment replace点击ListNav中的'D',SwipeNav将显示'D'。 Plz建议我如何实现这一点。
字符串数组:
<string-array name="tab_titles">
<item>A</item>
<item>B</item>
<item>C</item>
<item>D</item>
<item>E</item>
<item>F</item>
<item>G</item>
<item>H</item>
<item>I</item>
........
</string-array>
我使用下面的ListNav用OnItemClickListener替换SwipeNav:
FragmentManager fm=getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(((ViewGroup)(getView().getParent())).getId(), new SwipeNav());
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
SwipeNav通过PagerAdapter从String Array将数据显示为滑动视图:
tabTitlesArray = context.getResources().getStringArray(R.array.tab_titles);
我想你在那里缺少一步,那就是你需要在刷卡片段替换时以字符串形式发送数据。 喜欢。
Bundle bundle = new Bundle();
bundle.putString("TAG", "D");
// set Fragmentclass Arguments
SwipeNav fragobj = new SwipeNav();
fragobj.setArguments(bundle);
FragmentManager fm=getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(((ViewGroup)(getView().getParent())).getId(), fragobj);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
现在在您的滑动片段上确保您正在接收创建时传递的字符串。
所以在onCreateView
method。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String passingString = getArguments().getString("TAG");
return inflater.inflate(R.layout.fragment, container, false);
}
TAG只是确定你要传递的内容。