onBackPressed() 覆盖

Posted

技术标签:

【中文标题】onBackPressed() 覆盖【英文标题】:onBackPressed() override 【发布时间】:2014-02-25 11:18:10 【问题描述】:

这是我的应用程序的结构:

Activity A 是一个ListViewActivity,带有一个用于启动 B Activity 的按钮。

在完成表单后的B活动中,有一个启动C活动的按钮。

C 活动保存设置并创建新记录以显示在 A 活动中。 Button save in C 活动启动 A 活动。

如果用户在 B 上按下 A 活动的返回按钮时多次执行此过程(没有通过 C,因为当我启动它时我设置了 FLAG_ACTIVITY_NO_HISTORY)并且他第二次按下返回再次返回A,重复次数等于创建的记录数。

用返回按钮关闭应用程序变成了一个漫长的过程。

我希望 A 活动中的 onBackPressed 始终关闭应用程序。

英语不是我的语言,我希望我很清楚。

【问题讨论】:

【参考方案1】:

总是像下面这样开始你的活动A

    Intent intent = new Intent(current_activity_context, A.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();

【讨论】:

【参考方案2】:

finish() 方法会做到这一点。 像这样的

Intent intent = new Intent(getApplicationContext(),
                Activity B.class);
        Activity A.this.startActivity(intent);

        finish();

【讨论】:

【参考方案3】:

您必须重写 OnBackPressed 方法

@Override
public void OnBackPressed()
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    super.onBackPressed();//Optional
 

希望对你有帮助。

【讨论】:

【参考方案4】:

试试这个

@Override
public void onBackPressed() 
    // Do Here what ever you want do on back press;

【讨论】:

以上是关于onBackPressed() 覆盖的主要内容,如果未能解决你的问题,请参考以下文章

android super.onBackPressed()计时

在单个活动 android 应用程序中管理 onBackPressed

如何覆盖android中的操作栏后退按钮?

显示原生广告 OnBackpressed

onBackPressed() 使用

RecyclerView 适配器中的 onBackPressed()