【发布时间】:2019-08-10 09:09:35
【问题描述】:
我正在关注 this tutorial 学习导航组件。 我测试工具栏菜单按钮导航 UI 的基本设置如下
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/detail_dest"
android:icon="@drawable/ic_details"
android:title="@string/details"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/settings_dest"
android:icon="@drawable/ic_settings"
android:title="@string/settings"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/camera_dest"
android:icon="@drawable/ic_camera"
android:title="@string/camera"
app:showAsAction="ifRoom"/>
</menu>
导航图是
<?xml version="1.0" encoding="utf-8"?>
<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/mainFragment">
<fragment android:id="@+id/mainFragment"
android:name="com.example.navmenu.MainFragment"
android:label="fragment_main" tools:layout="@layout/fragment_main">
<action android:id="@+id/action_mainFragment_to_detail_dest"
app:destination="@id/detail_dest"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"/>
</fragment>
<!-- Detail Fragment -->
<fragment android:id="@+id/detail_dest"
android:name="com.example.blankfragments.DetailFragment"
android:label="fragment_detail" tools:layout="@layout/fragment_detail"/>
<!-- Settings Fragment -->
<fragment android:id="@+id/settings_dest"
android:name="com.example.blankfragments.SettingsFragment"
android:label="fragment_settings" tools:layout="@layout/fragment_settings"/>
<fragment android:id="@+id/camera_dest"
android:name="com.example.blankfragments.CameraFragment"
android:label="fragment_camera" tools:layout="@layout/fragment_camera"/>
</navigation>
我的第一个问题是当我触摸屏幕上的片段时,例如 SettingsFragment 当它已经在屏幕上时它会被重新创建,是否可以防止这种情况,如果可以,是否只能通过修改 xml 来实现?
第二个问题是教程说 menu.xml 中的项目 ID 应该与片段 ID 相同。
菜单中的detail_dest 也应该是导航图中的detail_dest。但是,我希望使用动画完成过渡,因为它会在您使用动作时发生。当我更改带有 id 的使用菜单项时,它只转到 Detail Fragment 并且没有动画,我该如何解决这个问题?
【问题讨论】:
标签: android android-architecture-navigation