问题标签 [android-jetpack-navigation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
558 浏览

android - ClassNotFoundException:找不到类“androidx.navigation.NavController$OnNavigatedListener”

当我尝试将导航图设置到我的应用程序时,我收到此错误:

日志猫:

0 投票
1 回答
182 浏览

android - 使用 Android Jetpack Navigation 时如何防止 Navigation

我想检查实际的 Fragment 是否脏了,并警告用户丢失他的更改。在导航发生之前,我无法在 Navcontroller 上找到一个侦听器进行交互。

我已经尝试为 BottomNavigationView 设置一个侦听器,但结果是导航在重置后不再工作。

有没有我可以使用的全局监听器或其他干净的解决方案?

0 投票
1 回答
237 浏览

android - Android 导航组件

我在我的应用程序中添加了 Android 新导航组件并创建了 navGraph 并添加了一些片段作为目的地。我发现每次我导航到目的地之前的目的地(片段)都开始重新启动。而我上一个目的地(片段)的最后状态已经丢失。有什么选择可以保留这个吗?正如我已经retainInstance在片段中使用的那样。

0 投票
1 回答
1210 浏览

android - 带有导航编辑器的 BottomNavigationView 面临片段不变的问题

我正在尝试将 BottomNavigationView 与导航编辑器一起使用。我已经按照给定的方式实现了所有内容,但只显示主页,当我更改选项卡时,它不会更改片段。

这是主要活动代码:

这是主要的活动 xml 文件:

这是菜单文件:

这是我创建的 nav_graph :

0 投票
3 回答
1593 浏览

android - Android Navcontroller hardware back button crash

I am using new android storyboard to create an application. The flow need to be like following:

SplashFragment -> Fragment1 -> Fragment2

Following is the storyboard(navigation_main.xml):

activity_main.xml:

App Theme is withou t action bar since I don't want the actionbar to show up:

Basically I need a Fragment1 to Fragment2 navigation and then on hardware back button press, back to Fragment1. To navigate from Fragment1 to Fragment2, I have the following code in Fragment1:

SplashFragment should not be maintained in the stack, since it is not required after first time showing in launch. That is why I have popTo only in Fragment1 to Fragment2 action. But after running the same, pressing back from Fragment2, for the first time does nothing(doesn't pop) and the second time, it crashes with the following exception:

SplashFragment line 51 is:

This exception is gone if I remove the popTo from Fragment1 to Fragment2 action, but then also the back button doesn't work. What am I doing wrong here?

Edit 1:

As per Stavro Xhardha's comment, I made some modification to the navigation XML:

And in MainActivity override onBackPressed as follows:

Now Fragment2 pops to Fragment1, but subsequent back press on Fragment1 keeps on bringing Fragment1 in a loop. I am not able to exit the app.

0 投票
0 回答
417 浏览

android - DataBindingUtil 加上 NavHostFragment 后退导航不起作用

我之前发布了一个关于 NavHostFragment 无法在背压上工作的问题。任何人都没有回答这个问题,因此花了几天的时间,我终于设法解决了这个问题。(我只是在前面的问题中添加了新的代码并在此处更改了代码,以减少问题的长度)

导航图更改为以下内容:

上一个问题中缺少的一些信息。片段绑定之前是这样完成的(下面的代码是针对 Fragment1 的,在 Fragment2 中也是如此):

上面的代码,带有导航图,现在不会崩溃,但后退按钮只是拒绝工作。它不会弹出片段,只需在第二次后按时退出。

现在我发现使用膨胀 UIDataBindingUtil.setContentView是我的代码无法正常工作的原因。我通过逐步创建另一个示例项目来解决这个问题,直到我弄清楚它何时停止工作。我通过使用 DataBindingUtil 绑定到在 OnCreateView 中膨胀的视图,使示例项目使用数据绑定工作,如下所示。我删除了 oncreate 覆盖。

现在,此代码在示例项目中有效,但是当我将其放置在最终项目中时(在示例项目中,我只需放置按钮并单击以导航,就像在我的原始项目中一样,我有 web 服务调用并查看模型观察以进行导航),当从 Fragment2 向后按下时,上面的代码会崩溃并出现以下异常(如果我从 Fragment1 向后按下,Fragment1 也会发生类似的崩溃)。

我用谷歌搜索了这个例外,但在这个特定的上下文中没有发现任何有用的东西可以解决我的问题。请帮忙。

0 投票
4 回答
7075 浏览

android - 在导航图的第一个屏幕上的工具栏上显示返回按钮

我正在尝试使用 androidx 导航组件并使用工具栏和容器设置我的活动。我在我的应用程序的一个间歇性屏幕中执行此操作,该屏幕有很多内部导航/步骤,我想我可以尝试导航拱组件。

由于这是一个间歇性屏幕,我想在第一个屏幕本身的工具栏上显示一个后退按钮。

我已经在我的主机活动的 onCreate() 方法中使用以下代码设置了工具栏,

我可以在图表的第二个屏幕上看到后退按钮/后退箭头,但在第一个屏幕上看不到。

从第一步开始,我还需要进行哪些更改才能在工具栏上添加后退按钮。

0 投票
1 回答
1682 浏览

android - 如何在 Android 应用中同时添加底部导航和导航抽屉

目前,我的底部导航中有三个选项和它们的导航图。

我的 mainActivity.xml 文件的一部分如下所示:

在我的 mainActivity 中,我编写了这段代码,

与导航相关的一切都由 jetpack 导航库处理。现在我还想添加一个导航抽屉,并且在抽屉中我想添加不同的菜单项(不仅仅是底部导航中的三个),所以我将为导航抽屉添加新的菜单资源文件,现在我应该如何使用导航库底部导航和导航抽屉?我不想手动执行片段事务并使用片段管理器。

我能想到的一种方法是将所有片段添加到单个导航图中(当前用于底部导航),然后也将相同的 navController 用于导航抽屉,但我正在寻找更好的方法。

0 投票
6 回答
14403 浏览

android - 片段 XXX {} 未与片段管理器关联

我开始在我的应用程序中使用导航组件,我面临以下问题。我的第一个片段是 LoginFragment。登录成功后,会显示 mainFragment。我希望当用户在 mainFragment 上并按后退按钮不返回 loginFragment 时。为此,我在 nav_graph 中添加了这两行:app:popUpTo="@+id/lovable_app_navigation"并且app:popUpToInclusive="true"效果很好。这是我的导航图:

问题是,一段时间后,当我的会话过期时,用户在应用程序中的哪个片段中都没有关系,我必须在所有堆栈上显示 LoginFragment。我为此创建了一个全局操作action_global_loginFragment。问题是当我导航到 LoginFragment 时出现此错误:

如果我删除它popUpTo并且popUpToInclusive它工作正常,但是后退按钮功能会受到影响,它会从 mainFragment 返回到 loginFragment。知道如何解决这个问题吗?提前致谢。

0 投票
0 回答
447 浏览

android - 使用 JetPack 导航架构组件设置工具栏的副标题

我正在使用 JetPack 导航架构组件,我可以在导航图中设置工具栏的标题android:label="@string/event_lists_toolbar_title"。我也想设置字幕,但找不到这样做的方法,除了通过我的片段中的代码:

但是字幕会保留下来,我必须在再次导航到另一个屏幕后重新设置它。我可以在onPause()函数中执行此操作,也可以在我的 Activity (NavController.OnDestinationChangedListener) 中执行此操作:

没有更好的解决方案吗?不支持开箱即用的导航?