在 Titanium 中使用侧边栏菜单导航的问题
issue in navigating with sidebar menu in Titanium
您好,我已经实现了侧边栏导航。
它有 3 个选项,例如第一个屏幕(即 index.js)中的侧边栏菜单是主屏幕。
问题是当我通过侧边栏菜单转到任何屏幕然后再次回到主屏幕然后从主屏幕如果我按下后退按钮它会转到最后一个屏幕 visited.The 预期的行为应该是如果我回到主屏幕它应该退出应用程序。
那么如何跟踪主屏幕。
如果我在主屏幕上,它无论如何都应该退出应用程序,而不是从主屏幕转到上次访问的屏幕。
这是代码。
代码有点长。
有人可以帮忙吗?
index.xml 文件
<Alloy>
<Window id = "win" onOpen="openCurrentIssue">
<View id="view1" width="75%" height="Ti.UI.FILL" left="0%" >
<TableView id="menuTable"></TableView>
</View>
<View id="view2" width="Ti.UI.FILL" height="Ti.UI.FILL" backgroundColor="#A9F5A9" >
<View id="viewcheck1" >
<Label id="title" width="Ti.UI.SIZE" text="PolymerCommunique" height="Ti.UI.SIZE" textAlign="Ti.UI.TEXT_ALIGNMENT_CENTER"></Label>
<ImageView id="menuImg" image="/images/menu.png" onClick="showsideBar" left="5"></ImageView>
</View>
<View id="viewcheck2" width="Ti.UI.SIZE" height="Ti.UI.SIZE" backgroundColor="#A9F5A9" layout="vertical">
<Label id="cIssue" text="Demo" width="Ti.UI.SIZE" height="Ti.UI.SIZE" textAlign="Ti.UI.TEXT_ALIGNMENT_CENTER" top="10" color="black"></Label>
<ImageView id="cImage" width="Ti.UI.SIZE" height="Ti.UI.SIZE" top="45"></ImageView>
<Button id="cButton" title="Advertiser"></Button>
</View>
<View id="viewBelow" width="150" height="Ti.UI.FILL" backgroundColor="#A9A5A9" left="-150" visible="false" top="40">
<TableView id="menuTable"></TableView>
</View>
</View>
</Window>
index.js 文件
var isMenu = false;
function showsideBar(e) {
try {
if (isMenu) {
$.viewBelow.animate({
left : -150,
//left :0,
duration : 300,
curve : Ti.UI.ANIMATION_CURVE_EASE_IN_OUT
});
isMenu = false;
} else {
$.viewBelow.visible=true;
$.viewBelow.animate({
left : 0,
duration : 300,
curve : Ti.UI.ANIMATION_CURVE_EASE_IN_OUT
});
isMenu = true;
}
} catch(e) {
Ti.API.info('Exception from index.js ' + e.value);
}}
function openCurrentIssue(e) {
try {
var url = "http://polymerscommunique.com/api/current_issue.aspx";
var jsonResponse;
var response;
var xhr = Ti.Network.createHTTPClient({
onload : function() {
Ti.API.info("Received text: " + this.responseText);
jsonResponse = JSON.parse(this.responseText);
$.cImage.image = jsonResponse[0].cover_image_url;
$.cIssue.text = jsonResponse[0].issue_title;
},
onerror : function(e) {
Ti.API.debug(e.error);
alert('error');
},
timeout : 5000
});
xhr.open("GET", url);
xhr.send();
} catch(e) {
Ti.API.info('Exception from index.js ' + e.value);
}}
createTableRow = function(args) {
var row = Ti.UI.createTableViewRow();
var parentView = Ti.UI.createView({
width : Ti.UI.FILL,
height : 40,
left : 5
});
var childView = Ti.UI.createView({
height : Ti.UI.SIZE,
width : Ti.UI.FILL,
layout : "horizontal"
});
var image = Ti.UI.createImageView({
image : args.leftImage,
width : 18,
height : 20,
left : 5
});
childView.add(image);
var title = Ti.UI.createLabel({
color : "white",
text : args.title,
left : 10,
font : {
fontSize : 17,
fontWeight : 'bold'
}
});
childView.add(title);
parentView.add(childView);
row.add(parentView);
var separator = Ti.UI.createView({
bottom : 0,
height : "1dp",
width : Ti.UI.FILL,
backgroundColor : "#303030"
});
row.add(separator);
return row;};
var rows = [];
rows.push(createTableRow({
title : 'Current Issue',
leftImage : '/home.png'}));
rows.push(createTableRow({
title : 'Past Issues',
leftImage : '/settings.png'}));
rows.push(createTableRow({
title : 'Subscribe',
leftImage : '/logout.png'}));
$.menuTable.setData(rows);
$.menuTable.addEventListener('click', function(e) {
if(e.index=="0"){
Alloy.createController('index', 'just');
}
if (e.index == "1") {
showsideBar();
Alloy.createController('pastissues', 'just');
}
else if (e.index == "2") {
showsideBar();
Alloy.createController('check','just');
} });
$.win.open();
从 table 侦听器中也可以看到另外两个文件。
如果也需要,请告诉我。
您可以在主 window 控制器中收听后退按钮事件,然后在单击时结束当前 activity:
$.home.addEventListener('android:back', function (e) {
var activity = Titanium.Android.currentActivity;
activity.finish();
});
您好,我已经实现了侧边栏导航。 它有 3 个选项,例如第一个屏幕(即 index.js)中的侧边栏菜单是主屏幕。 问题是当我通过侧边栏菜单转到任何屏幕然后再次回到主屏幕然后从主屏幕如果我按下后退按钮它会转到最后一个屏幕 visited.The 预期的行为应该是如果我回到主屏幕它应该退出应用程序。 那么如何跟踪主屏幕。 如果我在主屏幕上,它无论如何都应该退出应用程序,而不是从主屏幕转到上次访问的屏幕。
这是代码。 代码有点长。 有人可以帮忙吗?
index.xml 文件
<Alloy>
<Window id = "win" onOpen="openCurrentIssue">
<View id="view1" width="75%" height="Ti.UI.FILL" left="0%" >
<TableView id="menuTable"></TableView>
</View>
<View id="view2" width="Ti.UI.FILL" height="Ti.UI.FILL" backgroundColor="#A9F5A9" >
<View id="viewcheck1" >
<Label id="title" width="Ti.UI.SIZE" text="PolymerCommunique" height="Ti.UI.SIZE" textAlign="Ti.UI.TEXT_ALIGNMENT_CENTER"></Label>
<ImageView id="menuImg" image="/images/menu.png" onClick="showsideBar" left="5"></ImageView>
</View>
<View id="viewcheck2" width="Ti.UI.SIZE" height="Ti.UI.SIZE" backgroundColor="#A9F5A9" layout="vertical">
<Label id="cIssue" text="Demo" width="Ti.UI.SIZE" height="Ti.UI.SIZE" textAlign="Ti.UI.TEXT_ALIGNMENT_CENTER" top="10" color="black"></Label>
<ImageView id="cImage" width="Ti.UI.SIZE" height="Ti.UI.SIZE" top="45"></ImageView>
<Button id="cButton" title="Advertiser"></Button>
</View>
<View id="viewBelow" width="150" height="Ti.UI.FILL" backgroundColor="#A9A5A9" left="-150" visible="false" top="40">
<TableView id="menuTable"></TableView>
</View>
</View>
</Window>
index.js 文件
var isMenu = false;
function showsideBar(e) {
try {
if (isMenu) {
$.viewBelow.animate({
left : -150,
//left :0,
duration : 300,
curve : Ti.UI.ANIMATION_CURVE_EASE_IN_OUT
});
isMenu = false;
} else {
$.viewBelow.visible=true;
$.viewBelow.animate({
left : 0,
duration : 300,
curve : Ti.UI.ANIMATION_CURVE_EASE_IN_OUT
});
isMenu = true;
}
} catch(e) {
Ti.API.info('Exception from index.js ' + e.value);
}}
function openCurrentIssue(e) {
try {
var url = "http://polymerscommunique.com/api/current_issue.aspx";
var jsonResponse;
var response;
var xhr = Ti.Network.createHTTPClient({
onload : function() {
Ti.API.info("Received text: " + this.responseText);
jsonResponse = JSON.parse(this.responseText);
$.cImage.image = jsonResponse[0].cover_image_url;
$.cIssue.text = jsonResponse[0].issue_title;
},
onerror : function(e) {
Ti.API.debug(e.error);
alert('error');
},
timeout : 5000
});
xhr.open("GET", url);
xhr.send();
} catch(e) {
Ti.API.info('Exception from index.js ' + e.value);
}}
createTableRow = function(args) {
var row = Ti.UI.createTableViewRow();
var parentView = Ti.UI.createView({
width : Ti.UI.FILL,
height : 40,
left : 5
});
var childView = Ti.UI.createView({
height : Ti.UI.SIZE,
width : Ti.UI.FILL,
layout : "horizontal"
});
var image = Ti.UI.createImageView({
image : args.leftImage,
width : 18,
height : 20,
left : 5
});
childView.add(image);
var title = Ti.UI.createLabel({
color : "white",
text : args.title,
left : 10,
font : {
fontSize : 17,
fontWeight : 'bold'
}
});
childView.add(title);
parentView.add(childView);
row.add(parentView);
var separator = Ti.UI.createView({
bottom : 0,
height : "1dp",
width : Ti.UI.FILL,
backgroundColor : "#303030"
});
row.add(separator);
return row;};
var rows = [];
rows.push(createTableRow({
title : 'Current Issue',
leftImage : '/home.png'}));
rows.push(createTableRow({
title : 'Past Issues',
leftImage : '/settings.png'}));
rows.push(createTableRow({
title : 'Subscribe',
leftImage : '/logout.png'}));
$.menuTable.setData(rows);
$.menuTable.addEventListener('click', function(e) {
if(e.index=="0"){
Alloy.createController('index', 'just');
}
if (e.index == "1") {
showsideBar();
Alloy.createController('pastissues', 'just');
}
else if (e.index == "2") {
showsideBar();
Alloy.createController('check','just');
} });
$.win.open();
从 table 侦听器中也可以看到另外两个文件。 如果也需要,请告诉我。
您可以在主 window 控制器中收听后退按钮事件,然后在单击时结束当前 activity:
$.home.addEventListener('android:back', function (e) {
var activity = Titanium.Android.currentActivity;
activity.finish();
});