我想在退出应用程序之前捕获android后退按钮以强制确认。我的应用程序是一个双窗口/两个选项卡应用程序,基于钛cli创建的骨架。我已尝试过以下三种方法。据我所知,后退按钮永远不会被困住,当按下后退按钮时应用程序就会关闭。
Titanium 3.2.0 CLI OS X 10.9
// below true of all windows:
// modal: true,
// exitOnClose:true
// android:back and androidback have been tried
Ti.App.addEventListener('androidback', function(e){
var confirmClear = Titanium.UI.createAlertDialog({
message:'Exit App?',
buttonNames: ['Yes','No']
});
confirmClear.show();
confirmClear.addEventListener('click',function(e) {
if (e.index === 0) {
win1.close();
}
});
});
//////////////////////////////////////////////////
win1.addEventListener('androidback', function(e){
var confirmClear = Titanium.UI.createAlertDialog({
message:'Exit App?',
buttonNames: ['Yes','No']
});
confirmClear.show();
confirmClear.addEventListener('click',function(e) {
if (e.index === 0) {
win1.close();
}
});
});
//////////////////////////////////////////////////
win2.addEventListener('androidback', function(e){
var confirmClear = Titanium.UI.createAlertDialog({
message:'Exit App?',
buttonNames: ['Yes','No']
});
confirmClear.show();
confirmClear.addEventListener('click',function(e) {
if (e.index === 0) {
win2.close();
}
});
});
阅读完建议后,请点击我现在正在使用的代码:
tabGroup.addEventListener('androidback', function(e){
var confirmClear = Titanium.UI.createAlertDialog({
message:'Exit App?',
buttonNames: ['Yes','No']
});
confirmClear.show();
confirmClear.addEventListener('click',function(e) {
if (e.index === 0) {
tabGroup.close();
}
});
});
答案 0 :(得分:2)
首先,我总是使用android:back
。
当您使用tabGroups方法时,您应该知道这些选项卡链接到软窗口(win1
和win2
),这可能就是为什么它们没有捕获android:back
事件。
说,你应该在tabGroup(ApplicationTabGroup.js)中捕获这个事件。在那里你应该添加这样的东西:
function ApplicationTabGroup(Window) {
//create module instance
var self = Ti.UI.createTabGroup();
...
self.addEventListener('android:back', function(e){
var confirmClear = Titanium.UI.createAlertDialog({
message:'Exit App?',
buttonNames: ['Yes','No']
});
confirmClear.show();
confirmClear.addEventListener('click',function(e) {
if (e.index === 0) {
win1.close(); //this line won't work
//$.index.activeTab = 1; //use this to switch to tab2
}
});
});
return self;
}
另一方面,如果您尝试切换到另一个标签页,则应尝试使用self.activeTab = 1;
而不是win1.close();
。
win1.close();
如果它是标签(win1.containingTab = tab1;
)的一部分,则无效。如果您要删除标签,则在Android中,方法removeTab
也不会有效。
答案 1 :(得分:0)
你应该只为win1使用exitOnClose事件。
还告诉我你用的是哪个钛问?
答案 2 :(得分:0)
尝试使用“android:back”代替。