基于字符串数组项,将相同项显示到下一个片段

时间:2019-03-26 05:55:12

标签: android arrays android-fragments

我在导航抽屉中有两个片段ListNav和SwipeNav。 ListNav显示String数组中数据的列表视图。 SwipeNav将数据显示为字符串数组中相同数据的滑动视图。我可以将片段从ListNav替换为SwipeNav。字符串数组数据显示“ A到Z”。

我的问题是,当我单击ListNav中的列表时(假设B),然后SwipeNav(替换的片段)从开始显示滑动视图(意味着A)。假设,如果我通过片段替换在ListNav中单击“ D”,则SwipeNav将显示“ D”。请给我建议我将如何实施。

字符串数组:

<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将数据显示为滑动视图:

tabTitlesArray = context.getResources().getStringArray(R.array.tab_titles);

1 个答案:

答案 0 :(得分:1)

我想您在那里缺少一个步骤,那就是当替换滑动片段时,您需要以String形式发送数据。
喜欢。

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方法中。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    String passingString = getArguments().getString("TAG");    
    return inflater.inflate(R.layout.fragment, container, false);
}

此处TAG仅用于识别您正在传递的内容。