На основе элемента String Array показать тот же элемент в следующем фрагменте - PullRequest
0 голосов
/ 26 марта 2019

У меня есть два фрагмента ListNav и SwipeNav в окне навигации.ListNav показывает представление списка данных из массива String.SwipeNav показывает данные как представления смахивания тех же данных из массива строк.Я могу заменить фрагмент из ListNav в SwipeNav.Строковый массив данных показывает «от А до Я».

Моя проблема в том, что когда я щелкаю по списку в ListNav (предположим, B), тогда SwipeNav (замещенный фрагмент) показывает виды смахивания с начала (означает A).Предположим, если я нажму «D» в ListNav через «Замена фрагмента», SwipeNav покажет «D».Пожалуйста, предложите мне, как я буду это реализовывать.

String Array:

<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>

I ListNav, который я использую ниже для замены SwipeNav на OnItemClickListener:

        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);

1 Ответ

1 голос
/ 26 марта 2019

Я полагаю, что вам не хватает одного шага, и вам нужно отправить данные в виде строки при замене фрагмента.
Как.

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 просто указывает, что вы передаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...