android-studio - 显示对话后如何停止代码运行?(安卓工作室)
问题描述
在我的应用程序的最开始,我会出现一个对话框,用户可以在其中选择两个选项:
我运行对话的代码如下所示:
override fun onStart() {
super.onStart()
popup.show(supportFragmentManager, "example d")
Log.d("TAG", "THIS SHOULD BE RUN AFTER I HAVE CLICKED ONE OF THE DIALOGUE BUTTONS")
checkSharedPreference()
switcher()
}
问题是代码不会停止popup.show(supportFragmentManager, "example d")
。它继续运行。我认为这与对话异步有关,不是吗?我该如何解决这个问题?Completionhandler
? Asynctask
? 还有什么?
更新 我尝试按照@Akshay Paliwal 所说的来构建时钟:
class MainActivity : AppCompatActivity() {
public fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val context = applicationContext
val sharedPreference = context.getSharedPreferences(
"key", Context.MODE_PRIVATE)
val builder = AlertDialog.Builder(applicationContext)
builder.setTitle("Välkommen till Demensvård utan tvång.")
.setMessage("Berätta vem du är.")
.setPositiveButton("Anhörig") { dialog, which ->
val version = "anhorig"
sharedPreference.edit().putString("version", version).apply()
checkSharedPreference()
switcher()
}
.setNegativeButton("Personal") { dialog, which ->
val version = "personal"
sharedPreference.edit().putString("version", version).apply()
checkSharedPreference()
switcher()
}
return builder.create()
}
override fun onStart() {
super.onStart()
//THIS? doesn't work...
onCreateDialog(WHAT BUNDLE???)
//OR THIS?
onCreateDialog(what bundle?).show(supportFragmentManager, "example d")
}
How do I call the `onCreateDialog` function? `onCreateDialog(WHAT BUNDLE???)` what bundle should be passed? `onCreateDialog(what bundle?).show(supportFragmentManager, "example d")` Again what bundle?
还是我需要onCreateDialog
在一个单独的类中扩展AppCompatDialogFragment
?在那种情况下,我main.switcher
应该从该类的回调中调用吗?
解决方案
你是对的,弹出窗口是非阻塞的。据我所知,Android 旨在防止开发人员编写同步对话框。
您可以在这里做的是向您的弹出窗口添加一个回调并在相应的侦听器方法中处理响应。将代码从 onStart() 移动到您的处理程序方法,然后它将在您的弹出窗口响应后执行。
在以下示例中,您将向其中一个弹出按钮添加侦听器并在其 onClick() 方法中执行代码:
popupButton.setOnClickListener(new OnClickListener();
@Override
public void onClick(View v) {
Log.d("TAG", "THIS SHOULD BE RUN AFTER I HAVE CLICKED ONE OF THE DIALOGUE BUTTONS")
} });
推荐阅读
- nativescript - Spawn 发布到 Apple Store 失败的问题
- android - 如何在一封电子邮件中发送附件+邮件正文
- excel - VBA / Excel:如何允许用户使用下拉选项添加新行
- java - Hibernate & JPA“mappedBy”与关系和级联的所有者
- android - 标题在底部导航视图中对齐
- matlab - 无法遍历结构 matlab 的字段
- reactjs - 从类名中反应设置显示名的类装饰器
- mysql - Grails id 映射自动增量 - MySQL
- ios - 有没有办法将“NSDate.timeIntervalSinceReferenceDate”转换为像 Firebase 这样的字符串?
- elasticsearch - 通过在弹性搜索中将 url 作为文档的输入来搜索单词