如何使工具栏中的后退按钮的行为与设备上的物理按钮相似?

时间:2016-06-14 22:04:07

标签: android

我有一个带有主要活动的android应用程序,它从登录Activity传递信息。每当我从MainActivity访问另一个活动时,我使用Android设备底部的后退按钮,MainActicity将重新启动其先前的状态。但是,如果我使用工具栏或Actionbar中的后退按钮,MainActivity将被重置,这会清除之前从loginActivity传递的信息?如何让顶部的后退按钮更像底部的按钮?

我是否必须找到一种从数据库传递信息而不实际评估登录屏幕的方法?我该怎么做呢只有在用户输入正确的登录信息时才能传递此信息。

2 个答案:

答案 0 :(得分:1)

工具栏后退按钮将按层次结构运行。但设备后退按钮可用作弹出窗口。这就是为什么当你使用设备返回按钮时,你的信息不会消失。但是当你使用工具栏/操作栏后退/主页按钮时。它将调用一个活动并重新创建该活动供用户使用。在那一点上,你正在丢失你的数据。您可以将数据保存在捆绑包中,也可以只执行设备后退按钮。 有了这些知识,你就可以做到; 您可以调用 super.onBackPressed();

这是一个例子:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
        switch ( item.getItemId() ) {
              case android.R.id.home:
                super.onBackPressed();
        }
        return super.onOptionsItemSelected(item);
}

编辑:您可以保存您的活动状态。以下是一个很好的例子:Saving Android Activity state using Save Instance State

答案 1 :(得分:0)

要重现用于在Android上导航的硬/软键,您可以finish()进行活动,如下所示:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
        case android.R.id.home:
            finish();
            return true; //this does the trick
    }
    return super.onOptionsItemSelected(item);
}