Android应用程序上的多个警报对话框

Multiple alert dialog on Android app

本文关键字:对话框 应用 应用程序 程序上 Android      更新时间:2023-09-26

我正在使用Appcelerator Titanium开发一个跨平台应用程序。我将在用户点击Android返回按钮时触发注销方法,在登录窗口后的下一个窗口。一切工作,但第二次我试图登录,然后注销警告对话框显示两次。希望有人能帮忙。Giacomo .

var win = Titanium.UI.currentWindow;
var msg = Titanium.UI.createLabel({
    text:"Mail: " + win.email + "'nNome: " + win.name,
    top:10,
    left:10,
    width:300,
    height:'auto'
});
win.add(msg);
//definisco una finestra di dialogo per informare l'utente sul logout
var dialog = Ti.UI.createAlertDialog({
    buttonNames: ['Si', 'No'],
    message: 'Vuoi effettuare il logout?',
    title: 'Attenzione'
});
//intercetto il tasto indietro di android e gestisco il Logout
var listener = win.addEventListener('android:back',function(e){ 
//aggiungo un event listener alla finestra di dialogo intercettando il tasto si o no
dialog.show();
dialog.addEventListener('click', function(e){
    if (e.index == 1){
        //è stato cliccato il tasto NO, quindi nessuna azione
    }else if(e.index == 0){
        //è stato cliccato il tasto Si, quindi effettuo il logout, cancello la variabile di sessione ...
        win.close();
        win.remove(msg);
        win.remove(dialog);
    }
}); 
});

我把你的答案从问题中拉出来并贴在这里。这将允许未来的用户更容易地看到您的解决方案。


解决方案最终是这个代码

var handlerBack = function (e){ 
//aggiungo un event listener alla finestra di dialogo intercettando il tasto si o no
dialog.show();
dialog.addEventListener('click', function(e){
    if (e.index == 1){
        //è stato cliccato il tasto NO, quindi nessuna azione
    }else if(e.index == 0){
        //è stato cliccato il tasto Si, quindi effettuo il logout, cancello la variabile di sessione ...
        win.close();
        win.remove(msg);
        win.remove(dialog);
        win.removeEventListener('android:back', handlerBack);
    }
}); 
};
win.addEventListener('android:back', handlerBack);