У меня проблема. Я реализовал макет вкладок с двумя вкладками задач и чатов. На вкладке Задачи отображается компонент Навигация, который содержит 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);
}
}