捕获“后退”按钮的行为

时间:2013-07-23 14:47:30

标签: android

我有一个由两个活动组成的应用程序:“主要”活动(M)和“设置”活动(S)。 S只能从M启动.S的目的是修改影响M的设置.S有一个“完成”按钮,完成活动并返回M(通过M的onActivityResult方法,{{ 1}}包含要应用的M的新设置。

我的问题是:如果我使用硬件“后退”按钮(而不是S的“完成”按钮)从S返回到M,系统会将M带到顶部,而不知道修改后的设置。可以修改此行为吗?理想情况下,当S位于顶部时,我想改变硬件“后退”按钮的行为,这样它就会导致S完成(这样M就会得到新的设置)。

如果那是不可能的,更一般地说:你会怎样按下“后退”按钮进行设置?

5 个答案:

答案 0 :(得分:4)

您可以简单地覆盖onBackPressed()

@Override
public void onBackPressed()
{
    // check if settings have been changed
    super.onBackPressed();
}

由于这是一个“结束操作”,因此在完成其他工作后执行super调用。

关注blackbelt答案(现已删除的评论)留下的评论,如果您还没有,可能会考虑用户是否确定他们想要退出而不保存,以防他们进入设置并决定不要改变任何东西。如果因为他们决定不保存更改而按下后退按钮怎么办?您可能已经有了类似取消按钮的内容。

答案 1 :(得分:2)

您必须覆盖onBackPressed中的Activity,并通过done按钮管理相同的逻辑

答案 2 :(得分:2)

您还可以使用包含设置的静态字段向您的包中引入新的java类。

当用户更改设置&请尽快在活动的OnResume()方法中或稍后根据需要从中阅读。

答案 3 :(得分:1)

您可以通过覆盖onbackpressed方法

来实现您想要的效果
@Override
public void onBackPressed() {
    Intent intent = new Intent();

    //get your settings from your views
    intent.putExtra("setting1","on");
    intent.putExtra("setting2","off");

    setResult(RESULT_OK);
    finish();
}

答案 4 :(得分:1)

上面的答案会做你想要的,但是:

您是否考虑过使用内置的Android SharedPreferences?这样,对设置(在S中制作)的更改将存储到设备中,然后您可以告诉活动M查看设置并在onResume方法中进行适当更新。此外,设置将永久保存,无论S发生什么都无关紧要。