【问题标题】:How do I resume screen activity for more than one activity?如何为多个活动恢复屏幕活动?
【发布时间】:2018-12-24 23:48:19
【问题描述】:

所以我有这两个屏幕,消息屏幕和游戏屏幕。我想要做的是当用户从任一屏幕切换回来时,它会从上一个活动恢复。

这是我的游戏屏幕中的一段代码,允许用户转到消息屏幕:

public void onMessagesButtonClick() {
    Intent intent = new Intent(this, Messages.class);
    startActivity(intent);
    overridePendingTransition(0, 0);
}

这是一段允许用户从消息屏幕返回游戏屏幕的代码。

public void onGameButtonClick() {
    Intent intent = new Intent(getApplicationContext(), Game.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);
    finish();
    overridePendingTransition(0, 0);
}

到目前为止,我能够从游戏屏幕转到消息屏幕,然后从消息屏幕转到游戏屏幕中的活动。

我现在遇到的问题是我无法从消息屏幕恢复活动,只能从游戏屏幕恢复活动。如果我将onMessagesButtonClick() 更新为:

public void onMessagesButtonClick() {
    Intent intent = new Intent(getApplicationContext(), Messages.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);
    finish();
    overridePendingTransition(0, 0);
}

我将无法再从游戏屏幕恢复活动。就像我第一次进入屏幕一样,重新开始屏幕。

当在屏幕之间来回切换时,如何才能从两个屏幕恢复之前的活动?

【问题讨论】:

  • 使用 onSaveInstanceState 保存活动的状态,并在 onCreate() 中将状态返回到 bundlesavedInstanceState 中。没那么难。
  • @Bert Hanz:我认为您应该了解using Intent Flag 用于启动活动
  • 覆盖 onBackPressed() 以将您带到正确的屏幕。

标签: java android android-studio android-intent


【解决方案1】:

试试这个

public void onGameButtonClick() {
    Intent intent = new Intent();
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    setResult(RESULT_OK, intent);
    finish();
    overridePendingTransition(0, 0);
}

在你的游戏课上

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1) {
            if(resultCode == RESULT_OK) {
             //If you are going to fetch data from former activity
            }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多