Не удается найти фрагмент внутри графика навигации - PullRequest
0 голосов
/ 14 апреля 2020

У меня проблема. Я реализовал макет вкладок с двумя вкладками задач и чатов. На вкладке Задачи отображается компонент Навигация, который содержит 2 фрагмента. Скажем, Фрагмент A и Фрагмент B . Фрагмент A имеет кнопку для перехода из Фрагмент A -> Фрагмент B , а для чатов у меня есть отдельный фрагмент, скажем, ChatsFragment .

Ниже приведен код для моего основного содержания. Который имеет пейджер просмотра (который имеет два фрагмента Фрагмент A и ChatsFragment ). Поэтому, когда я помещаю свой контейнер с фрагментами (содержит фрагменты A и B) над моим пейджером просмотра. Я не могу перейти из Фрагмент A -> Фрагмент B , что привело к ошибке. Фрагмент не найден. Я попробовал два разных подхода для перехода к фрагменту B (используя navcontroller и используя диспетчер фрагментов), оба вызвали одну и ту же ошибку. (Я покажу вам, если вы спросите)

Но когда я размещаю видовой пейджер под контейнером с фрагментами. Я могу перейти от A-> B , но раскладка вкладок не работает с Фрагмент A , но когда я перехожу к Фрагмент B , тогда работает раскладка вкладок .

То, что я хочу, это когда я нахожусь во фрагменте. Расположение вкладки должно работать так же, как навигация должна работать (От A-> B)

activity_main . xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Main2Activity">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

        <com.google.android.material.tabs.TabLayout
            android:id="@+id/tab_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabSelectedTextColor="#ffffff"
            app:tabIndicatorColor="#ffffff"
            app:tabTextColor="@android:color/darker_gray"/>

    </com.google.android.material.appbar.AppBarLayout>

    <include layout="@layout/content_main2" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

content_main. xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />

    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navGraph="@navigation/nav_graph" />


</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity. java

package com.helpinghandsorg.helpinghands;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.viewpager.widget.ViewPager;

import com.google.android.material.tabs.TabLayout;
import com.helpinghandsorg.helpinghands.ui.chats.ChatsFragment;

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //Adding fragments to tabs
        TabLayout tabLayout = findViewById(R.id.tab_layout);
        ViewPager viewPager= findViewById(R.id.view_pager);
        ViewpagerAdaptor viewpagerAdaptor = new ViewpagerAdaptor(getSupportFragmentManager());
        viewpagerAdaptor.addFragment(new FirstFragment(), "Tasks");
        viewpagerAdaptor.addFragment(new ChatsFragment(), "Chats");

        viewPager.setAdapter(viewpagerAdaptor);
        tabLayout.setupWithViewPager(viewPager);

    }

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