我正在开发一个从LoginPage开始的应用程序。当用户登录时,他移动到主屏幕,其中存在不同部门的网格视图。
除登录页面之外的每个应用程序页面都有一个页脚,它有不同的图标,如主页,注销等。
我想使用移动后退按钮添加条件后退功能。有些条件如下:
1)LoginPage --->主屏幕--->在后面,用户应该注销并转到登录页面
2)主屏幕 - >任何部门--->任何Sub deprtment - >如果用户按“返回”按钮,则按相同顺序返回
3)用户是申请中的任何地方--->如果从Footer按回家按钮--->进入主屏幕 - >在前一页上没有后退功能,它应该遵循条件1.
4)如果用户在登录页面上,那么他将按下后退按钮退出应用程序
5)如果用户在主屏幕上,那么用户应该注销并在预先观看后退按钮上进入登录页面
我在Manifest中尝试使用“noHistory = true”,并在Activity文件中使用Intent标记。
任何人都可以建议我解决问题的最佳方法。
答案 0 :(得分:1)
应该不是问题,您所要做的就是覆盖onBack
功能并添加注销过程。
不是问题,后退按钮的正常行为就是这样。
请勿这样做!不良行为。
后退按钮的正常行为。
这是第一步。
答案 1 :(得分:1)
这用于退出应用程序退出。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
System.exit(0);
}
return super.onKeyDown(keyCode, event);
}
如果你只想回来,那么从上面的代码中删除System.exit(0)。 通过使用它,您可以管理您想要的所有条件。
答案 2 :(得分:1)
全局使用堆栈以保存屏幕顺序。堆栈必须在应用程序级别可用。单击后退按钮时获取屏幕顺序。为屏幕顺序写开关盒并启动该活动。就是这样。
例如,。
crate a class class MyStack{
//here declare a static stack
//create setter,getter method for assinging values to stack
}
使用setter方法在堆栈中启动新活动分配屏幕值时 如果你从主屏幕开始一个活动,将1分配到堆栈,你就开始子屏幕将2分配到堆栈中。
点击返回时获取该值
switch(value){
case 1: //start mainscreen break;
case 2: //start sub screen break;
}
答案 3 :(得分:0)
尝试此操作以在后退按钮上捕获事件
public boolean onKeyDown(int keyCode, KeyEvent event){
if(keyCode == KeyEvent.KEYCODE_BACK) {
Intent Act2Intent = new Intent(thisActivity, Activity2.class);
startActivity(Act2Intent);
finish();
return true;
}
return false;
}
答案 4 :(得分:0)
在每个活动工具上 OnBackPress()。 覆盖它并添加您想要的功能,例如注销,清除历史堆栈并启动新的(上一个)活动。
答案 5 :(得分:0)
我认为最简单的方法可能是覆盖“主屏幕”活动中的后退按钮,这样当按下后退按钮时,您可以执行以下操作: 1.执行注销逻辑: 2.明确呼叫您的登录页面
这可能会提供您正在寻找的行为。 关于如何覆盖后退按钮,您可以参考以下链接: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
希望这有帮助!
答案 6 :(得分:0)
根据我的理解,您无法覆盖主页按钮的功能。默认情况下,它通过调用onPause()来最小化应用程序的当前状态。当您再次打开应用程序时,会调用onResume()并从暂停的位置启动应用程序。就你的后退按钮功能而言,上面的大多数答案都很好。
<强>尝试,强>
@Override
public void onBackPressed()
{
finish(); //finishes the current activity and doesnt save in stock
Intent i = new Intent(CurrentActivity.this, Login.class);
i.addflags(Intent.flag_activity_no_history);
startActivity(i);
}