6

我有以下情况:

在 android manifest 我有三个活动: ActivityA ActivityB - ActivityA ActivityC 的父级

我想要做的是使用intent.StartActivity() 从ActivityC 启动ActivityA。活动成功启动。现在我想使用操作栏的后退按钮(左上角)返回到 ActivityC,但是由于 ActivityA 将 ActivityB 作为父级(如 android 清单中声明的​​那样),操作栏后退按钮将我带到 ActivityB 而不是之前的 ActivityC。如果我使用后退键盘按钮,我会被重定向到 ActivityC。

我该怎么做才能在两种“导航回来”的情况下获得相同的结果。我正在寻求的结果是重定向到启动 ActivityA 的活动,而不是它的父活动。可能吗?

4

3 回答 3

11

您不应在清单中将 ActivityB 定义为 ActivityA 的父级。相反,像这样处理 ActivityA 中的 onOptionsItemSelected:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            finish();
        }
    return super.onOptionsItemSelected(item);
    }
于 2013-10-21T08:50:03.917 回答
3

当你调用 startActivity() 时,这样做:

Intent intent = new Intent(callingActivity.this, destinationActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
于 2013-10-21T08:49:40.030 回答
2

尝试以下操作:

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

    return super.onOptionsItemSelected(item);
}

这将模拟后退按钮按下,这将另外保留Activity您来自的状态(选项卡、滚动位置)。

(归功于 @Kise 在https://stackoverflow.com/a/31331757/2703209中提出的建议)

于 2016-04-11T17:42:30.697 回答