【问题标题】:Show Dialog or Activity based on Condition根据条件显示对话框或活动
【发布时间】:2019-05-05 21:16:08
【问题描述】:

我想在用户第一次使用 android 应用程序时显示一个对话框或 UI。当满足条件时(向应用程序服务器注册完成),UI(或对话框)消失,并在 SharedPreferences 中设置一个标志,告知 android 应用程序已注册,以便每个新应用程序启动与注册相关的 UI不出现。

我是Android开发的初学者,不知道用什么?从性能的角度来看,哪一个更好? UI 片段和根据条件显示/隐藏片段(检查 SharedPref 标志)? 还是在活动之间切换?或者是否有可以根据标志值显示或禁用的 UI 介绍?

【问题讨论】:

标签: android firebase android-activity android-fragmentactivity


【解决方案1】:

这是一个非常简单的解决方案,首先您只需要检查首选项中是否保存了一个标志。最好在您的启动活动的 onCreate 中执行此操作

    val settings = PreferenceManager.getDefaultSharedPreferences(context)
    val shouldDisplayDialog = settings.getBoolean("first-launch", true)
if(shouldDisplayDialog) // your logic here

getBoolean 方法中的第二个值是默认值,因此如果没有保存的值,它会将 shouldDisplayDialog 的值设置为 true。 成功登录后,只需将值写入 SharedPrefs。

with (settings.edit()) {
putBoolean("first-launch", false)
commit()
}

就是这样!

【讨论】:

  • 感谢您的回答。事实上,我知道我将在 SharedPreferences 中保存标志并获取/更新其值,并且我知道我将在 Activity 的 onCreate 方法中检查这一点。但我的问题更多是关于使用哪些视图组件以及如何使用: UI Fragment in same Activity ?还是对话框?而且我需要继续显示 UI 的内容,直到后端服务中发生事件;因此,在事件发生之前,任何关闭或取消按钮都不应允许 UI 消失。所以我的问题是哪种解决方案更好且性能更好:启动画面?用户界面片段?在活动之间切换?
  • 是否可以使用 DialogFragment 并显示基于 SharedPref 标志的对话框并在从后台服务收到消息时隐藏该对话框?
  • 在这种情况下,当您“积极等待”服务器响应时......我建议使用片段。根据我的“构建良好的 UX”经验,对话框应该主要/仅用于确认操作(例如删除项目)或显示重要信息。在您的情况下,您需要将对话框设置为不可取消,这会阻止大部分未使用的屏幕空间。片段是一个更好的选择恕我直言。此外...它提供了比常规对话更大的灵活性。
  • 嗯...这很简单。您只需要制作一个漂亮的片段,它会告诉用户发生了什么(可能是进度条和一些文本 - 真的不需要更多,除了可能的徽标)并且在获得服务器响应后,只需将片段替换为你的下一个。如果你想要一个好的 UX 建议,那么也有一个简单的答案……用一些很酷的动画制作一个糟糕的片段过渡。这使人们感到高兴。此外,如果没有互联网连接/飞行模式等,您需要解决该怎么做。我知道......这很模糊,但基本上就是这样。
  • 是和否 :D 当你使用 Fragments 时,Activity 是它们的容器。因此,您可以在其他活动中重复使用它们。但要知道的一件好事是,谷歌现在推荐单活动应用程序,因为它减少了可能的代码倍增。要替换这些碎片,FragmentTransaction 中已经有一个方法 replace() 另外,由于您是新手...我建议使用 Android Jetpack 中的导航组件。它提供了很好的方法来在应用程序的屏幕之间创建导航,包括回栈管理。此外,后退按钮的行为在那里“解决”了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 2020-01-13
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多