Открыть фрагмент с макетом координатора внутри другого фрагмента при нажатии на элемент списка - PullRequest
0 голосов
/ 14 ноября 2018

Мое приложение имеет одно основное действие и 4 фрагмента, которые все используют FragmentPagerAdapter со списком в пейджере представления.Что я хочу сделать, это открыть другой фрагмент для получения дополнительной информации от щелчка элемента просмотра списка, который заполняет его данные из пользовательского адаптера массива.

Когда пользователь щелкает любой элемент списка просмотра, другой фрагмент будет открыт для подробной информации.Я создал макет кординатора для этого подробного фрагмента.Я также добавляю необходимую реализацию в файл Gradle.Насколько я понимаю, я могу использовать намерения только для действий, так как в моем приложении есть только одно действие, я не могу использовать намерение.Так что я прочитал, что мне нужно поменять местами фрагменты, заменив их.Я много читаю и много пробовал, но я так растерялся и потерян.Я хочу воспользоваться преимуществом кнопки «Назад», поэтому я попробовал это

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);


    adapter = new LocationAdapter(getActivity(), locationArrayList);

    final ListView listView = view.findViewById(R.id.list);

    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            FragmentTransaction ft = getChildFragmentManager().beginTransaction();

            ft.replace(R.id.custom_list_container, ForFurtherInfo.newInstance("Test", "Testt"));
            ft.addToBackStack(null);
            ft.commit();



        }
    });

. В приведенном выше коде, где я заменяю фрагмент, я впервые добавил макет R.id.list_view в качестве первого аргумента, но он этого не сделал.работать, выбрасывать ошибку, которая гласит, что он не может найти макет list_view, но должен иметь его, потому что он раздувается в основном действии.

Вот основное действие ->

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ViewPager viewPager = findViewById(R.id.view_pager);
    viewPager.setOffscreenPageLimit(4);

    CustomFragmentAdapter customFragmentAdapter = new CustomFragmentAdapter(getSupportFragmentManager(),this);
    viewPager.setAdapter(customFragmentAdapter);

    TabLayout tabLayout = findViewById(R.id.pager_header);
    tabLayout.setupWithViewPager(viewPager);


}

ТогдаЯ заменяю его на custom_list_container, который представляет собой пользовательский макет для заполнения Listview.

Это класс фрагмента 'ForFutureInfo'

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

return inflater.inflate(R.layout.coordinator_layout_for_further_info,container,false);

}

И мои проблемы:

1)ForFurtherInfo фрагмент работает, но в виде списка как вид элемента списка.Вместо того, чтобы открывать новый пустой фрагмент, он помещает свое изображение в элемент listview в качестве элемента представления списка, но это все, что он просто помещает в изображение, а не в текст и т. Д., Которые есть в моемordinator_layout_for_future_info.TabLayout также исчезает, но я могу провести к другим фрагментам.

2) Из-за этой неисправности, когда я использую кнопку «Назад», она выходит из приложения.

3) Я хочу Reddit какфункция, которая, когда я нажимаю пункт, собирается открыть другой фрагмент, который имеет макет координатора в нем, и при прокрутке текста изображение будет сворачиваться на панель приложения.

4) Я прочитал, что мы не должныt добавить много действий в приложение и использовать фрагменты, но мне нужно другое действие для этого?

Это плохо нарисованная блок-схема моего достижения This is what I want to achieve

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