请帮帮我。
简介:我使用导航组件,单活动模式,通过底部导航菜单切换 3 个片段。我还有抽屉导航。
所有片段都处于同一级别(都是根目录,直接从bottm nav访问)
事情应该是这样的:对于所有片段,必须有一个带有抽屉图标的工具栏。
问题:当应用程序启动时,主页片段显示抽屉的标准汉堡包图标,这是可以的。但是当我切换到任何其他片段时,抽屉图标变成箭头图标。此外,当按下该箭头时,抽屉从左侧滑动。这意味着它仍然可以作为显示抽屉菜单的按钮,但只是图标发生了变化。
问题:从底部导航菜单切换到另一个片段时,如何禁用汉堡图标转换为箭头图标?
文件:导航图:
<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/nav_graph"
app:startDestination="@id/bottom_nav_proposals"
>
<fragment
android:id="@id/bottom_nav_proposals"
android:name="com.base.ProposalsContainerFragment"
android:label="fragment_proposals"
tools:layout="@layout/fragment_proposals" />
<fragment
android:id="@id/bottom_nav_vehicles"
android:name="com.base..DriversVehiclesFragment"
android:label="Vehicles" >
</fragment>
<fragment
android:id="@id/bottom_nav_drivers"
android:name="com.bijov1apps.base.carrier.root.drivers.DriversVehiclesFragment"
android:label="Drivers" >
</fragment>
</navigation>
Run Code Online (Sandbox Code Playgroud)
活动:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//initializing Navigation COmponent
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_carrier_root) as NavHostFragment
val navController = navHostFragment.navController
//setting up toobar stuff
val toolbar: Toolbar = findViewById(R.id.toolbar_root)
toolbar.setupWithNavController(navController, drawerLayout)
//setting up navigation drawer stuff
val …Run Code Online (Sandbox Code Playgroud) android kotlin navigation-drawer hamburger-menu android-navigation-graph
使用导航图,当我从片段导航到活动并使用 safeargs 传递参数时,在活动中,我无法获取参数。我怎样才能得到从片段传递的参数???
在片段中,我可以通过getArgument()函数获取参数,但不能在活动中获取参数。
在片段中,我通过以下方式切换到另一个活动:
findNavController().navigate(AFragmentDirections.actionAFragmentToBActivity(1)
Run Code Online (Sandbox Code Playgroud)
并在 B 活动中通过以下方式获取 onCreate 中的参数:
val args = BActivityArgs.fromBundle(savedInstanceState!!)
Run Code Online (Sandbox Code Playgroud)
但我的应用程序立即崩溃。
请不要将其标记为重复,我已经阅读了这些问题,但仍然无法正常工作 导航组件 popUpTo bug Android 导航组件 popUpTo 行为 Android 导航组件 + 登录流程 + 嵌套 BottomNavigationView
我在用
def nav_version = "2.2.1"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
Run Code Online (Sandbox Code Playgroud)
这是我的导航代码:
<fragment
android:id="@+id/splashFragment"
android:name="com.view.SplashFragment"
android:label="SplashFragment" >
<action
android:id="@+id/action_splashFragment_to_loginFragment"
app:destination="@id/loginFragment"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popUpTo="@id/loginFragment"
app:popUpToInclusive="true"/>
<action
android:id="@+id/action_splashFragment_to_mainFragment"
app:destination="@id/mainFragment"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popUpTo="@id/mainFragment"
app:popUpToInclusive="true"/>
</fragment>
Run Code Online (Sandbox Code Playgroud)
当我在开机状态下按后退按钮MainFragment或LoginFragment仍然能够导航回splashFragment 时。我已经有app:popUpTo和app:popUpToInclusive标签了。我希望我的应用程序不要导航回splashFragment
我想创建一个单一活动应用程序,为简单起见,它只包含以下屏幕:登陆、登录、注册、主页、个人资料。主页和个人资料屏幕仅在用户登录后才可见,并且属于导航抽屉。
不幸的是,我想到的是用 nav_graph_1 创建一个活动,其中包含以下目的地:登陆、登录、注册。然后使用 nav_graph_2(主页和个人资料目的地)创建另一个活动,其中将包含导航抽屉的所有设置:例如setupActionBarWithNavController,带有 nav_graph_2 和抽屉的 appBarConfiguration。
是否可以在单个活动应用程序中实现上述内容以及如何实现?
android navigation-drawer android-architecture-navigation android-jetpack-navigation android-navigation-graph
在 nav_graph 中,即使我已经使用过,我也会收到警告
项目级gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.3.72'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
def nav_version = "2.3.0-beta01"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)
应用级gradle:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: "androidx.navigation.safeargs.kotlin"
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.demo.sample" …Run Code Online (Sandbox Code Playgroud) android android-jetpack android-jetpack-navigation android-navigation-graph