我对Android开发很新。我已经阅读了许多安卓教程和文章,但我现在对我的情况仍然有些困惑。
我需要做什么: 我有两个对话框片段,f1和f2。背景中播放音频。当弹出任何对话框时,停止播放音频,当对话解除时,音频恢复。
我做了什么:
我已经使用两种方法实现了一个侦听器接口:onCreateDialog
和onDismissDialog
。它只适用于一个对话框(弹出f1或f2,音频停止。对话解除,音频恢复)
什么不对:
一种情况:f1弹出,按“是”,f1将解除,f2将弹出。音频将停止(实际上它已经停止因为f1加速),然后音频将恢复。所以我检查了日志,似乎f1 onCreateDialog
在f1 onDismissDialog
之前被调用,这就是f2加速时音频恢复的原因。
有人知道我能对这种情况做些什么吗?任何帮助表示赞赏!!
非常感谢!!!
答案 0 :(得分:1)
ArrayList <DialogFragment> dialogs = new ArrayList();
void resumeSound () {
for (DialogFragment dialog: dialogs){
//maybe isVisible won't work, try with isAdded() or add a custom
//flag like [boolean isVisible] inside the Dialog
if (dialog.isVisible() {
return;
}
}
....
//Code to resume sound;
....
}
//Put following on each dialog fragment
onCreateDialog () {
//Make sure dialog is added with a TAG or id, so you can find it later
dialogs.add(this);
}
onDismissDialog () {
//you'll have to put following line inside an array iterator,
//check if TAG or id equals, and then remove
//(maybe also implement equals() for DialogFragment
dialogs.remove();
resumeSound();
}