Android后退按钮会导致root而不是之前的活动

时间:2017-04-03 12:09:37

标签: android back-stack

好的,我有一个应用程序可以创建以下后台堆栈:

  1. 详情活动
  2. 主要活动
  3. 登录活动
  4. 它在具有足够RAM的设备上运行良好,但在较旧的设备上我遇到了一个特殊的问题。在这些设备上,每个新活动触发前一个活动的销毁以获得足够的内存。但是,按详细信息活动上的后退按钮会使用户进入登录活动而不是主活动。我使用默认行为(清单文件中没有Intent标志或与堆栈相关的活动属性)。根据我对documentation的理解,后退按钮的默认行为是让你回到之前的活动,而不是根活动。我错过了什么?

    编辑: 以下是我在清单中声明我的活动的方式:

        <activity
            android:name=".LoginActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_login"
            android:theme="@android:style/Theme.Holo.Light.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity
            android:name=".BoardViewActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:theme="@style/activity">
        </activity>
        <activity
            android:name=".TaskDetailsActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_task_details">
        </activity>
    

    LoginActivity启动BoardViewActivity:

        Intent intentBoardView = new Intent(this, BoardViewActivity.class);
        intentBoardView.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        startActivity(intentBoardView);
        finish();
    

    然后BoardViewActivity的一个片段启动TaskDetailsActivity:

        Intent intent = new Intent(getActivity(), TaskDetailsActivity.class);
        startActivityForResult(intent, REQUEST_CODE_TASKDETAILS);
    

    然后在TaskDetailsActivity:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case (android.R.id.home):
            TaskDetailsActivity.this.setResult(RESULT_CANCELED);
            finish();
            return true;
    
        case (R.id.action_save):
            save();
            return true;
    
        default:
            return super.onOptionsItemSelected(item);
        }
    }
    
    @Override
    public void onBackPressed() {
    
        super.onBackPressed();
    }
    

    如果我使用后退按钮或软件主页(向上)按钮并不重要 - 它总是返回到LoginActivity。

1 个答案:

答案 0 :(得分:0)

   @Override
    public void onBackPressed() {

        finish();
        super.onBackPressed();
    }

使用BackPressed完成app活动。