我想在安卓应用程序上做一些简单的事情。 如何返回到之前的活动页面。
我需要哪些代码才能返回到之前的活动页面。
我想在安卓应用程序上做一些简单的事情。 如何返回到之前的活动页面。
我需要哪些代码才能返回到之前的活动页面。
Android的活动(activities)存储在活动栈中。返回先前的活动可能意味着两件事情。
您使用startActivityForResult从另一个活动打开了新活动。在这种情况下,您可以从代码中调用finishActivity()函数,它将带您返回到上一个活动。
跟踪活动栈。每当您使用意图启动新活动时,可以指定附带标志如FLAG_ACTIVITY_REORDER_TO_FRONT
或FLAG_ACTIVITY_PREVIOUS_IS_TOP
。您可以使用此功能在应用程序的活动之间来回切换。不过我并没有经常使用它们。请查看这里的标志:http://developer.android.com/reference/android/content/Intent.html
正如在评论中提到的,如果使用startActivity()
打开活动,则可以使用finish()
关闭它。
如果您想要使用向上按钮,则可以在onOptionsSelected(MenuItem item)
方法中捕获它,并检查项目ID是否与android.R.id.home
相符,而不是评论中提到的R.id.home
。
尝试使用 Activity#finish()
。这基本上是默认情况下返回按钮所执行的操作。
this.finish();
。 - Jens Bodal#
是 finish()
方法是 Activity 类中的非静态方法的指示符。这不是有效的 Java 代码,但有助于解释如何使用该方法。 - Bryan HerbstActivity.someStaticMethod()
。 - JonnyReeves只需在 finish() 上点击即可。它会带您返回上一个活动。
只是这个
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
使用此方法可以返回到上一个activity,并保留其堆栈,同时清除其之后的所有activities。
例如,如果堆栈为A->B->C->D,并且您使用此标志启动B,则堆栈将变为A->B。
只需调用这些方法即可完成当前活动或通过onBackPressed返回上一步。
finish();
或者
onBackPressed();
你想要控制后退按钮的行为吗?你可以通过以下两种方法之一覆盖后退按钮(以转到特定活动)。
对于 Android 1.6 及以下版本:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
如果你只支持 Android 2.0 或更高版本:
@Override
public void onBackPressed() {
// do something on back.
return;
}
更多详情请参见:http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
试着思考一下,仿佛你必须按下返回按钮。
finish();
super.onBackPressed();
onBackPressed()
前缀中没有使用 super.
,而在 finish()
中使用了呢? - birgersp将以下代码添加到您的onCLick()方法中,它将返回到您之前的活动
finish();
或者您也可以使用以下代码。它对我非常有效。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
如果您想返回到之前的活动,请使用
finish();
onBackPressed();
如果您想进入第二个及以下的活动,请使用以下方法:
intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);