【问题标题】:Android: Remove a series of Activites on clicking backAndroid:点击返回时删除一系列活动
【发布时间】:2011-04-27 19:19:27
【问题描述】:

您好,我的应用程序现在是这样工作的..

Main -> SEARCH -> ActivityA -> SEARCH -> ActivityB

当我从 ActivityB 点击返回时,我想做以下操作

主要

即我想跳过活动 ActivityA 和 SEARCH。我知道我必须使用 FLAG,但是如何使用?

【问题讨论】:

标签: android android-activity


【解决方案1】:

这可能会有所帮助 Android: Clear the back stack

【讨论】:

    【解决方案2】:

    你可以这样做:

    在 SearchActivity 中

    Intent i = new Intent(this, ActivityA.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    startActivity(i);
    

    在活动A中

    Intent i = new Intent(this, SearchActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    startActivity(i);
    

    这将带您从 B 回到搜索,然后按两次后退按钮回到主。

    但是

    如果您从 Main 到 Search 再到 A 到 Search,然后点击返回按钮,您会从 Search 到 Search 再到 Main。 (搜索的两个实例,可能不是你想要的)

    最好将 Activity A 中的标志设置为:

    Intent i = new Intent(this, SearchActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    startActivity(i);
    

    这将停止上述行为,并且当你从 B 回击时仍然给你想要的东西

    【讨论】:

      【解决方案3】:

      我只需要像这样覆盖搜索活动中的后退按钮

       @Override
       public boolean onKeyDown(int keyCode, KeyEvent event)  {
           if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
               Log.d(TAG, "back pressed");
               Intent intent = new Intent(this, MainActivity.class);
               intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
               intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
               startActivity(intent);
           }
           return super.onKeyDown(keyCode, event);
       }
      

      【讨论】:

        猜你喜欢
        • 2011-08-13
        • 1970-01-01
        • 2013-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-01
        相关资源
        最近更新 更多