1

我正在开发一个从 LoginPage 开始的应用程序。当用户登录时,他会移动到主屏幕,其中存在不同部门的网格视图。

除登录页面外,应用程序的每个页面都有一个页脚,页脚有不同的图标,如主页、注销等。

我想使用移动返回按钮添加条件返回功能。一些条件如下:

1) LoginPage ---> Main Screen ---> 在后台用户应该注销并进入登录页面

2) 主屏幕 --> 任何部门 ---> 任何子部门 --> 如果用户按返回按钮,则按相同顺序返回

3)用户在应用程序中的任何位置--->如果从页脚按主页按钮--->进入主屏幕->没有返回上一页的功能,它应该遵循条件1。

4)如果用户在登录页面上,那么他将在按下返回按钮时退出应用程序

5)如果用户在主屏幕上,那么用户应该注销并在看到返回按钮时进入登录页面

我已经尝试在 Manifest 中使用“noHistory=true”,在 Activity 文件中使用 Intent 标志。

任何机构都可以建议我解决它的最佳方法。

4

7 回答 7

1
  1. 应该不是问题,您所要做的就是覆盖该onBack功能并添加注销过程。

  2. 没问题,后退按钮的正常行为正是如此。

  3. 不要这样做!!!不良行为

  4. 返回按钮的正常行为。

  5. 这是第一步。

于 2012-05-22T05:58:14.530 回答
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) 。通过使用它,您可以管理您想要的所有条件。

于 2012-05-22T06:02:49.970 回答
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;
}
于 2012-05-22T06:23:55.873 回答
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;
}
于 2012-05-22T05:57:29.633 回答
0

在每个活动上实现 OnBackPress()。覆盖它并添加您想要的功能,例如注销、清除历史堆栈和启动新的(以前的)活动。

于 2012-05-22T06:00:56.557 回答
0

我认为最简单的方法可能是覆盖“主屏幕”活动中的后退按钮,以便在按下后退按钮时您可以执行以下操作:1.执行注销逻辑:2.显式调用您的登录页面

这可能会给出您正在寻找的行为。关于如何覆盖后退按钮,您可以参考此链接: http ://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

希望这可以帮助!

于 2012-05-22T06:13:25.987 回答
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);
}
于 2012-05-22T06:33:14.060 回答