Как я могу перейти к фрагментам навигации? - PullRequest
0 голосов
/ 09 октября 2019

Я создаю приложение с боковой навигацией и нижней навигацией. Теперь макет MainActivity является макетом ящика. В этом есть боковая навигация, панель просмотра и нижняя навигация. Теперь этот просмотрщик связан с нижней навигацией. и работает нормально. Теперь, кодируя фрагменты боковой навигации, фрагменты должны быть связаны с действием, но я пытался связать его с MainActivity, но он не отвечает. Я также попытался создать другое действие и использовать макет ящика, объявленный в MainActivity, но это тоже не сработало. Вот мой код

xml code

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.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_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:openDrawer="start">



    <com.google.android.material.navigation.NavigationView
            android:id="@+id/side_nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:fitsSystemWindows="false"
            android:background="@color/side_nav"
            app:headerLayout="@layout/nav_header_main"
            app:itemTextColor="@color/white"
            app:menu="@menu/side_nav_menu" />

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

        <include
                android:id="@+id/appBarMain"
                layout="@layout/app_bar_main" />

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

            <androidx.viewpager.widget.ViewPager
                    android:id="@+id/viewpager_dashboard"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_above="@+id/bottomTabLayout"/>


            <com.google.android.material.tabs.TabLayout
                    android:id="@+id/bottomTabLayout"
                    android:layout_width="match_parent"
                    app:tabSelectedTextColor="@color/colorPrimary"
                    android:layout_height="wrap_content"
                    android:background="@drawable/ic_bottom_nav_background"
                    android:layout_alignParentBottom="true">

            </com.google.android.material.tabs.TabLayout>

        </RelativeLayout>

    </LinearLayout>

</androidx.drawerlayout.widget.DrawerLayout>

MainActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.side_nav_activity)

        doInitialSetup()

        val toolbar: Toolbar = findViewById(R.id.toolbarSideNav)
        setSupportActionBar(toolbar)


        /*
              SIDE NAV
         */
        val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
        val sideNavView: NavigationView = findViewById(R.id.side_nav_view)
        val toggle = ActionBarDrawerToggle(
            this,
            drawerLayout,
            toolbar,
            R.string.navigation_drawer_open,
            R.string.navigation_drawer_close
        )
        drawerLayout.addDrawerListener(toggle)
        toggle.syncState()

        sideNavView.setNavigationItemSelectedListener(this)
    }


    override fun onBackPressed() {
        val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
        if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
            drawerLayout.closeDrawer(GravityCompat.START)
        } else {
            super.onBackPressed()
        }
    }


    /*
       for SIDE NAV
     */

    override fun onNavigationItemSelected(item: MenuItem): Boolean {
        // Handle navigation view item clicks here.
        when (item.itemId) {
            R.id.nav_makePayment -> {

            }
            R.id.nav_maps -> {

            }
            R.id.nav_food_n_beverages -> {

            }
            R.id.nav_team -> {
                val teamFragment = FragmentTeam.newInstance()
                openFragment(teamFragment)
            }
            R.id.nav_developer -> {

            }
            R.id.nav_sponsors -> {

            }
            R.id.nav_emergency -> {

            }
        }
        val drawerLayout: DrawerLayout =
            findViewById(R.id.drawer_layout)
        drawerLayout.closeDrawer(GravityCompat.START)
        return true
    }

    /*
        Fragment Transaction -- for fragment transaction, that allows you to use intent feature for fragment
    */


    private fun openFragment(fragment: Fragment) {
        val transaction = supportFragmentManager.beginTransaction()
        transaction.replace(R.id.container, fragment)
        transaction.addToBackStack(null)
        transaction.commit()
    }
...