代码之家  ›  专栏  ›  技术社区  ›  Alexa289

为什么在实现导航图时,我的应用程序在我的mainActivity中添加片段后似乎没有响应?

  •  0
  • Alexa289  · 技术社区  · 7 年前

    enter image description here

    我正在尝试学习如何使用导航控制器。问题是,我的应用程序似乎没有响应,显示主要活动需要很长时间,而且我也不能按后退按钮(似乎没有活动)

    enter image description here

    <android.support.constraint.ConstraintLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context=".MainActivity">
    
        <android.support.v7.widget.Toolbar
                android:layout_width="0dp"
    
                android:layout_height="wrap_content"
                android:background="?attr/colorPrimary"
                android:theme="?attr/actionBarTheme"
                android:minHeight="?attr/actionBarSize"
                android:id="@+id/toolbar"
                app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"/>
    
    
        <fragment
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:id="@+id/nav_host_fragment"
                app:layout_constraintBottom_toTopOf="@+id/bottom_nav"
                app:layout_constraintTop_toBottomOf="@+id/toolbar"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                android:name="androidx.navigation.fragment.NavHostFragment"
                app:navGraph="@navigation/navigation_graph"
                app:defaultNavHost="true"
        />
    
    
        <android.support.design.widget.BottomNavigationView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                android:background="@color/colorPrimary"
                app:itemIconTint="@color/color_bottom_view_navigation"
                app:itemTextColor="@color/color_bottom_view_navigation"
                app:menu="@menu/menu_bottom_view"
                app:labelVisibilityMode="labeled"
                android:id="@+id/bottom_nav"/>
    
    
    
    
    </android.support.constraint.ConstraintLayout>
    

    <navigation 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/navigation_graph"
                app:startDestination="@id/mainActivity">
    
    
        <activity android:id="@+id/mainActivity" android:name="com.muchammadagunglaksana.navcontroller.MainActivity"
                  android:label="activity_main" tools:layout="@layout/activity_main"/>
    </navigation>
    

    这是我的主要活动课:

    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            val navController = Navigation.findNavController(this, R.id.nav_host_fragment)
    
            setupBottomNavMenu(navController)
            setupActionBar(navController)
        }
    
        private fun setupBottomNavMenu(navController: NavController) {
            bottom_nav?.let {
                NavigationUI.setupWithNavController(it, navController)
            }
        }
    
    
        private fun setupActionBar(navController: NavController) {
            NavigationUI.setupActionBarWithNavController(this, navController)
        }
    
    
        override fun onCreateOptionsMenu(menu: Menu?): Boolean {
            menuInflater.inflate(R.menu.menu_toolbar, menu)
            return true
        }
    }
    

    2 回复  |  直到 7 年前
        1
  •  0
  •   Hussnain Haidar    7 年前

    解决方案是,您必须删除作为起始目的地的主活动,并在其中添加一个新的片段/活动。这样地:

    <navigation 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/navigation_graph"
            app:startDestination="@id/mainFragment">
    
    
     <fragment android:id="@+id/mainFragment"
              android:name="com.cinderellaman.general.ui.fragments.MainFragment"
              android:label="main_fragment"
              tools:layout="@layout/main_fragment"/></navigation>
    
    推荐文章