问题标签 [up-button]
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.
java - 按下子活动中的向上按钮时,父活动中的 savedInstanceState 为空
我在我的应用程序中使用向上按钮时遇到问题。我已经阅读过许多处理类似问题的帖子,但没有一篇解决了我想要解决的相同问题。
我有两个活动 -A
和B
。A 显示 SQLite 数据库中所选类别的任务列表。每个任务都属于一个类别,因此,A 有一个topicId
从 Intent 传递的私有变量(它充当过滤器)。当我单击一个任务时,它会打开允许您编辑它的活动 B。B 有一个向上按钮,可将您带回 A(包含任务的列表)。
由于 A 从 Intent 中获取 topicId,当我单击 B 中的 Up 按钮时,A 中没有 Intent,并且 topicId 默认为 -1。我认为保留 id 很容易 - 只需像这样保存它:
在我使用的 onCreate() 方法中:
但是,传递给 onCreate() 的 savedInstanceState 始终是null
. 我将 Log 放入 A 的生命周期方法中,看看会发生什么。
- 我在 A -
onCreate()
运行并且捆绑包为空 - 我单击列表中的一个任务(一个片段,在 ViewPager 中加载)
onSaveInstanceState()
运行并保存我的 ID- 现在我在 B 并单击向上按钮(不是手机上的返回键)
- 它运行 A's
onDestroy()
,然后onCreate()
是 A's 和 bundlenull
!
有人能告诉我为什么onCreate()
在这种情况下 Bundle in 为空吗?我在 manifest.xml 中将 B 的父活动设置为 A。我还阅读了一个解决方案,假设您android:launchMode="singleTop"
在清单中为 A添加。
然而,这不是我想要的——如果它设置为 singleTop,当您单击向上按钮时,父活动不会被破坏。我希望将其销毁并重新创建,因为在 BI 中更改了我希望在单击向上时立即从 A 中的数据库重新加载的任务。
如果有人告诉我为什么 Android 将null
捆绑包传递给onCreate()
. 我已经尝试将此代码添加到 B 并且它不起作用:
我认为这篇文章是关于同样的问题,但它还没有回答 4 年...
如果您需要,我将发布代码。我不想一开始就太过分了。
编辑
经过更多搜索后,我找到了这个解决方案:link
据说:
当您按下返回时,Activity 被破坏并且它拥有的数据丢失。在此之后,当您重新打开应用程序时,您将始终在捆绑包中获得 null,因为正在创建一个新的、全新的实例。
当由于某些更改(如旋转)或因为它在后台暂停很长时间而重新创建 Activity 时,将使用 Bundle savedInstanceState。
如果您想保留一些数据,请考虑将 SharedPreferences 用于小型数据,或者考虑使用数据库(SQLite、Realm)或文件用于大型数据。
据我了解,Android 仅在某些特定情况下使用 Bundle,例如当您关闭/打开屏幕、单击主页按钮或更改屏幕方向时。在像我这样的情况下,您必须依赖其他一些功能,例如SharedPreferences
类。我欢迎拥有比我更高级知识的人对此事有更多的了解。
android-fragments - 如何处理工具栏中的向上按钮 - Kotlin
我已经手动/以编程方式在我的工具栏中为片段页面设置了一个向上按钮,片段中包含以下代码onCreateOptionsMenu
:
点击系统后退按钮将使用户回到上一个片段,但没有向上按钮(有效)我认为有些用户可能会迷路。
我很难弄清楚如何捕捉和处理向上按钮以将片段从后堆栈中弹出。
这篇SO 帖子显示了如何捕捉向上按钮单击,但它是在 Java 中,并且没有继续解释您将如何向上导航。
我认为它需要看起来像下面的代码,但到处都有错误:
该案例
android.R.id.home
显示“不兼容的类型:Int 和 MenuItem”错误?onBackPressed()
显示“未解决的参考”错误。
错误代码:
更新:
对另一个SO 帖子的评论在 Kotlin 中有一个潜在的解决方案。它捕获了对向上按钮的单击并返回到上一个片段页面,但是向上按钮并没有消失。因此,即使在我的应用程序中的顶级片段目标(与 中的每个选项卡对应的页面BottomNavigationView
)上,向上按钮现在仍然存在。
我认为这可能与我的应用程序中只有一个活动以及如上所述我在片段中设置向上按钮的方式有关?如果是这样,是否有解决方法或其他方法通过引用片段而不是整个活动来设置向上按钮?
如果有帮助,这是适配器.kt 文件中 RecyclerView 内部 ViewHolder 类中的代码,它导航到有问题的片段页面:
android - 登录 - 导航架构组件
我使用 android 导航架构组件实现了对我的 LoginFragment 的条件导航。我现在面临的问题是,我想隐藏工具栏上的向上按钮,并在用户未登录时禁用任何应用内导航。
我希望能够使用单一活动方法来实现这一点,其中 Activity 设置应用内导航 UI 和 navController 就像在 android sunflower 演示中一样,导航目的地是片段。
我实现了这里描述的条件导航: Navigation Architecture Component - Login screen
如何使用导航架构组件正确实现在登录屏幕上隐藏导航和向上按钮?
android - 活动的向上按钮导航到不同的活动
我有一个MyActivity
在其工具栏中实现了标准向上按钮的活动(屏幕左上角的左箭头)。
这个活动是独一无二的,因为用户可以从我的应用程序中的多个活动导航到它。
我需要这个向上按钮来指向用户来自的活动(与 Android 后退按钮的行为相同)。
相反,它总是指向 Home 活动,即使用户没有立即从那里回来,因为以下代码AndroidManifest.xml
:
如何覆盖此行为,以便MyActivity
“向上”按钮将用户返回到他来自的活动而不总是 Home 活动?
android - 设备的后退按钮与操作栏的后退按钮的活动生命周期差异
我目前正在学习活动生命周期。我注意到以下内容:
- 我有两个活动,A和B。
- 当我从 Activity A 打开 Activity B 时,A 停止,B 被创建并启动。
- 当我按下设备上的后退按钮时,B 被破坏,A 重新启动。
- 但是当我使用操作栏的后退/向上按钮时,B 被破坏,A 被破坏,然后调用 onCreate()。
为什么在操作栏中使用向上按钮时 A 被破坏而不是重新启动?
我希望我的问题很清楚,如果没有,请发表评论。
android - 向上按钮和返回按钮有什么不同?以及如何使 Up Button 像 Back Button 一样工作?
就每个按钮如何对待活动而言?有什么区别?
我有 3 个活动(我们称它们为 A、B 和 C)。A 是 B 的父级,B 是 C 的父级,并且一个意图需要额外的到下一个活动。我从 A 到 B,然后从 B 到 C。当我尝试使用向上按钮返回时,应用程序崩溃,这是因为它试图从意图中的额外信息中获取信息。
但是当我使用后退按钮时,它可以工作(???),我不知道为什么。
我试图使 Up Button 像 Back Button 一样工作,执行以下操作:
并且也尝试过使用NavUtils.navigateUpFromSameTask(this)
,但它也不起作用。我该如何解决?
编辑:错误日志
编辑:我在onCreate()
活动 B ( UserActivity
)中有更多代码。额外的意图被添加到活动 A
这里我称活动 C ( ChatActivity
)
在ChatActivity
onCreate()
我有这个
该错误可能是未正确管理此 loggedUser 和 otherUser extra。最奇怪的是,使用后退按钮 WORKS,而将 Up Button 设置为像 Back Button 一样工作却不行
jquery - jQuery go up 按钮在工作一次后停止工作
我通过在测试页面中应用 jquery 组合了一些基本的网站功能,这些功能包括平滑滚动、在向上和向下滚动网页时将活动类分配给焦点部分、缩小导航栏和返回顶部按钮。然而,我意识到,一旦我添加了“返回顶部 btn”,所有这些功能都停止工作了,因为它只能工作一次,然后一切都停止工作,网站只是“死”,甚至不能向下滚动。我已经做了一些研究,并更正了我的代码,从单独使用“.click()”到应用“.on(event,func)”,因为有人遇到了和我一样的事情,但仍然没有帮助。有人可以看看我的代码,请让我知道我还应该更改它以使其正常工作。谢谢
android - 在同一应用程序中使用抽屉布局进行底部导航 - 向上图标问题
我是 android 的初学者开发人员,我发现构建以下应用程序非常困难。
我想创建一个可以同时使用底部导航视图和抽屉布局的应用程序。我成功了,因为这两个项目都正常工作(我正在使用 NavigatioUI 实用程序)。我的问题是关于向上按钮。当我在两个导航视图之一上单击一个项目后更改片段时,向上按钮转换为后退箭头,因此如果我单击它,我将返回默认片段。我希望能够从每个片段中打开抽屉菜单,但我不能!谁能帮帮我吗?谢谢!
这是 MainActivity.kt
这是activity_main.xml
android - 向上按钮出现在导航中的起始目的地片段上
我一直在开发一个应用程序,并且遇到了这个问题,我试图在演示应用程序中重新创建。请看一下这个演示应用程序的简单代码。
列表片段.kt
细节片段.kt
MainActivity.kt
片段列表.xml
片段详细信息.xml
activity_main.xml
nav_graph.xml
问题
现在,当我运行应用程序时,它甚至会在 startDestination 片段(即 ListFragment)上显示向上按钮。我不知道为什么。据我从文档和 codelab 教程中了解到的,它不应该在 startDestination 片段上显示 Up 按钮。但是,在我的例子中,Up 按钮出现在 ListFragment 和 DetailFragment 上。不过,我必须说,Up 按钮在 ListFragment 页面上没有按应有的方式执行任何操作。
任何帮助解决这个问题都非常感谢。