【问题标题】:How can i return to specific previous activity on button pressed如何在按下按钮时返回特定的先前活动
【发布时间】:2017-03-14 05:34:49
【问题描述】:

我还有一个问题。假设我有三个活动:A, B and C。我可以来自A to C,也可以来自B to C。然后当我按下Activity C 中的按钮时,我想回到上一个活动,或者A 或B。我不知道哪个是以前的。

在活动中:

Intent intent=new Intent(this, C.class);
Intent.PutExtra("FROM_A", "A")
StartActivity;

在 B 活动中:

Intent intent=new Intent(this, C.class);
Intent.PutExtra("FROM_B", "B")
StartActivity;

在活动 C 中:

public void onClick(View v) {
    onBackPressed();    // automatic know which Activity i came from(A or B)
} 

请帮助我。怎么了?

感谢您的回答。

【问题讨论】:

  • Android 维护Activity 堆栈,因此当您调用onBackPressed() 方法时,它会自动切换您来的活动。更多详细信息请阅读developer.android.com/guide/components/activities/…
  • 嘿,为什么你会用这种方式来使用 Intent
  • 如果你不覆盖返回键它会自动带你到上一个活动,如果你去A到C,返回键会带AC 关闭后,类似地,如果你去 B 到 C,在活动 C 中按下返回键将带回活动 B .
  • 请说明拒绝投票的原因以及如何改进这个问题。

标签: android android-intent android-activity onclick onbackpressed


【解决方案1】:

在活动 C 中:

public void onClick(View v) {
    finish();
} 

【讨论】:

  • 感谢您的回答。我还有一个问题。如果我想在代码中指定其中一项活动(不是以前的活动)返回。这种情况应该怎么办?
【解决方案2】:

在活动中:

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

在 B 活动中:

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

在活动 C 中:

public void onClick(View v) {
    finish();    
} 

【讨论】:

  • 感谢您的回答。我还有一个问题。如果我想在代码中指定其中一项活动(不是以前的活动)返回。这种情况应该怎么办?
【解决方案3】:

在活动 A 中:

    Intent intent=new Intent(this, C.class);
    intent.PutExtra("FROM_A", "A")
    startActivity(intent);
    finish();  

在活动 B 中:

    Intent intent=new Intent(this, C.class);
    intent.PutExtra("FROM_B", "B")
    startActivity(intent);
    finish();  

在活动 C 中:

    public void onClick(View v) {
      Intent intent=new Intent(this, YourActivity.class);
      startActivity(intent);
      finish();  
    } 

【讨论】:

  • 我更喜欢只使用finish() 而不是显式调用生命周期方法
  • 感谢您的回答。我还有一个问题。如果我想在代码中指定其中一项活动(不是以前的活动)返回。这种情况应该怎么办?
  • @Alexey Shpaner 检查更新的代码..调用新活动时调用完成。和 C 活动指定你的活动并调用完成
【解决方案4】:

Android Activity 基于堆栈算法,当您在应用中打开新 Activity 时,堆栈会推送您的 Activity,而当您移除该 Activity 时,堆栈会弹出您的 Activity。因此,当您从 A 到 C 和 B 到 C 时,此活动将添加到堆栈中并遵循后进先出。因此,您只需在按下按钮时调用 finish() 方法。谢谢。

【讨论】:

  • 感谢您的回答。我还有一个问题。如果我想在代码中指定其中一项活动(不是以前的活动)返回。这种情况应该怎么办?
  • Alexey 如果你想指定特定的活动。当你按下支持按钮时,你只需使用 startActivity() 方法调用意图类,但始终记住当你调用特定活动时只需调用 finish()当前活动中的方法。如果您没有完成当前活动,您的应用会占用更多 RAM 空间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多