Ящик навигации нажмите, чтобы открыть другой фрагмент, чтобы заменить TabLayout & ViewPager - PullRequest
0 голосов
/ 25 октября 2018

У меня есть проект, в котором есть навигационный ящик, и он включает в себя 2 элемента «Дом» и «Сообщение».Страница «Сообщение» - это отдельный фрагмент, а «Домашняя страница» - это viewPager комбинированного табуляции, который включает в себя 3 различных фрагмента.То, что я хочу, это фрагмент «Сообщение», чтобы заменить tabLayout Home и viewPager.Теперь моя проблема в том, что когда я пытаюсь заменить фрагмент «Message», сам фрагмент ничего не показывает, но, учитывая, что внутри фрагмента «Message» есть большой TextView.

Код клика навигации MainActivity

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {


            switch (item.getItemId()) {

                case 0:
                    drawerLayout.openDrawer(GravityCompat.START);
                    break;

                case R.id.Home:
                    getSupportActionBar().setTitle("Home");
                    viewPager.setAdapter(mSectionPageAdapter);
                    viewPager.setCurrentItem(1);
                    mTabLayout.setupWithViewPager(viewPager);
                    break;


                case R.id.Message:
                    mTabLayout.removeAllTabs();
                    getSupportActionBar().setTitle("Message");
                    getSupportFragmentManager().beginTransaction().replace(R.id.viewPager_mainActivity, friendMessageFragment).commit();
                    break;



            }

            drawerLayout.closeDrawer(GravityCompat.START);
            return true;
        }
    });

Изображение домашней вкладкиLayout

Photo of

Изображение фрагмента сообщения. Предполагается, что этот фрагмент имеет текстовое представление в середине

Photo of

Я пытаюсьиспользовать getSupportFragmentManager() для замены моего TabLayout, но он, похоже, не работает вообще.Есть ли у кого-нибудь идея о том, что я делаю неправильно или чего мне не хватает в этом коде, я изо всех сил пытался решить эту проблему ...

Обновление XML-кода MainActivity

<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivityUsed.MainActivity">


<android.support.design.widget.CoordinatorLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <android.support.design.widget.FloatingActionButton
        android:id="@+id/floatingActionButton"
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:layout_gravity="bottom|end"
        android:layout_marginBottom="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:src="@drawable/add"
        app:backgroundTint="@color/backgroundOrange" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar_main_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:showDividers="beginning"
            android:theme="@style/Base.ThemeOverlay.AppCompat.Dark.ActionBar">



            <include
                android:id="@+id/app_bar_info_regis_main_activity"
                layout="@layout/app_bar_info_regis" />

            <include android:id="@+id/app_bar_search_view"
                layout="@layout/search_view"/>


            <android.support.design.widget.TabLayout
                android:id="@+id/main_tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">


            </android.support.design.widget.TabLayout>


        </android.support.design.widget.AppBarLayout>


        <android.support.v4.view.ViewPager
            android:id="@+id/viewPager_mainActivity"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@id/appbar_main_layout">


        </android.support.v4.view.ViewPager>


    </RelativeLayout>

</android.support.design.widget.CoordinatorLayout>

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:layout_marginEnd="-65dp"
    android:layout_marginRight="-65dp"
    android:fitsSystemWindows="false"
    app:headerLayout="@layout/nav_header"
    app:itemIconTint="@color/colorAccent"
    app:menu="@menu/main_activity_menu" />

1 Ответ

0 голосов
/ 25 октября 2018

когда это только два элемента, вы можете использовать ViewFlipper, который разрешает два дочерние узлы.

или использовать FrameLayout в качествеконтейнеры и раздувать фрагменты соответственно, вместо уже существующих XML.

как есть, он будет раздувать второй фрагмент, без возможности вернуться к первому фрагменту.

...