【问题标题】:I can't go back to previous activity in Android我无法在 Android 中返回之前的活动
【发布时间】:2015-08-27 10:33:54
【问题描述】:

我有一个活动 A 启动一个活动 B。在这个活动中,我有一个启动一个活动 C 的按钮,这个活动有一个保存按钮。当我按下手机中的保存按钮或返回按钮时,活动 C 完成并转到活动 A。我希望转到活动 B,但我不知道发生了什么。

先谢谢了。

这是从 B 启动 Activity C 的意图。

Intent intent= new Intent(B.this, C.class);
       intent.putExtra....
.
.
.                       

startActivityForResult(recordIntent, REQUEST_DATA);
return;

这是保存按钮:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int itemId = item.getItemId();
        if (itemId == R.id.menu_save) {
String displayString = editName.getText().toString();
    ServiceCall.upload(this.name, true, displayString, id);
        }
        return false;
    }

【问题讨论】:

  • 您是否在B 中覆盖了onActivityResult()
  • 从您提供的信息中不清楚为什么要调用“startActivityForResult”并传递recordIntent而不是intent。一般来说,除非您需要 Activity C 显式返回某些内容,否则请改用 startActivity(intent) 。我在 R.id.menu_save 处理程序上看不到任何会导致活动结束的代码。
  • 您是否也有机会发布您的清单?
  • 我们将需要三个活动的代码,您在其中创建意图以通过活动。例如,我们将需要您拥有的关于后退按钮的覆盖方法。
  • 请非常ServiceCall.upload方法有一些代码重定向到活动A

标签: android android-activity activity-finish


【解决方案1】:

我找到了返回正确活动的解决方案:仅在 finish() 方法之前使用此行

startActivity( new Intent(this, YourActivity.class) );

然后按返回按钮并返回到您想要的活动:

@Override
public void onBackPressed(){
    startActivity( new Intent(this, YourActivity.class) );
    finish();
}

【讨论】:

  • 这部分解决了我的问题。但是活动“B”刚刚重新启动,因此我想从活动“C”返回的信息仍然丢失。有什么想法吗?
  • 您是否尝试保存实例状态?
猜你喜欢
  • 2017-08-07
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多