如何在Android上与2个对话框片段生命周期进行交互?

时间:2016-03-28 18:34:01

标签: java android android-fragments android-dialogfragment android-debug

我对Android开发很新。我已经阅读了许多安卓教程和文章,但我现在对我的情况仍然有些困惑。

我需要做什么: 我有两个对话框片段,f1和f2。背景中播放音频。当弹出任何对话框时,停止播放音频,当对话解除时,音频恢复。

我做了什么: 我已经使用两种方法实现了一个侦听器接口:onCreateDialogonDismissDialog。它只适用于一个对话框(弹出f1或f2,音频停止。对话解除,音频恢复)

什么不对: 一种情况:f1弹出,按“是”,f1将解除,f2将弹出。音频将停止(实际上它已经停止因为f1加速),然后音频将恢复。所以我检查了日志,似乎f1 onCreateDialog在f1 onDismissDialog之前被调用,这就是f2加速时音频恢复的原因。

有人知道我能对这种情况做些什么吗?任何帮助表示赞赏!!

非常感谢!!!

1 个答案:

答案 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();
}