在android中返回功能

时间:2012-05-22 05:54:36

标签: android android-layout android-intent

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

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

我想使用移动后退按钮添加条件后退功能。有些条件如下:

1)LoginPage --->主屏幕--->在后面,用户应该注销并转到登录页面

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

3)用户是申请中的任何地方--->如果从Footer按回家按钮--->进入主屏幕 - >在前一页上没有后退功能,它应该遵循条件1.

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

5)如果用户在主屏幕上,那么用户应该注销并在预先观看后退按钮上进入登录页面

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

任何人都可以建议我解决问题的最佳方法。

7 个答案:

答案 0 :(得分:1)

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

  2. 不是问题,后退按钮的正常行为就是这样。

  3. 请勿这样做!不良行为

  4. 后退按钮的正常行为。

  5. 这是第一步。

答案 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);
}