Android:返回上一个活动

我想在android应用上做一些简单的事情。 怎么可能回到以前的活动。

我需要什么代码才能回到以前的活动

Android活动存储在活动堆栈中。 回到之前的活动可能意味着两件事情。

  1. 您使用startActivityForResult从另一个活动中打开了新的活动。 在这种情况下,您可以从代码中调用finishActivity()函数,它将使您回到之前的活动。

  2. 跟踪活动堆栈。 无论何时用意图启动新的活动,都可以指定一个意向标志,如FLAG_ACTIVITY_REORDER_TO_FRONTFLAG_ACTIVITY_PREVIOUS_IS_TOP 。 您可以使用它在应用程序中的活动之间进行随机播放。 虽然没有使用太多。 看看这里的标志: http : //developer.android.com/reference/android/content/Intent.html

正如在注释中提到的,如果活动是用startActivity()打开的,那么可以用finish()关闭它。 如果你想使用Up按钮,你可以在onOptionsSelected(MenuItem item)方法中捕获它,同时在注释中提到的R.id.home不像R.id.home那样检查项目ID。

尝试Activity#finish() 。 这或多或少是默认的后退按钮。

只需点击完成() 。 它会带你到以前的活动。

只是这个

 super.onBackPressed(); 
 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

这将使您保持以前的活动,保留其堆栈并清除堆栈之后的所有活动。

例如,如果堆栈是A-> B-> C-> D,并且用此标志启动B,则堆栈将是A-> B

你想要控制后退按钮的行为? 您可以通过以下两种方法之一来覆盖后退按钮(以转到特定的活动)。

对于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

只需调用这些方法即可完成当前活动或由onBackPressed返回

 finish(); 

要么

 onBackPressed(); 

如果您已经正确设置了活动父级的AndroidManifest.xml文件,则可以使用:

 NavUtils.navigateUpFromSameTask(this); 

这是你的孩子的活动。

如果你想去只想去以前的活动使用

 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); 

你可以明确地调用onBackPressed是最简单的方法
请参阅返回上一个活动的详细信息

使用意向启动第二个活动(根据您的要求使用startActivitystartActivityForResult )。 现在当用户按下返回按钮时,顶部的当前活动将被关闭,并显示前一个活动。

现在让我们假设你有两个活动,一个是为用户选择一些设置,如语言,国家等,选择后,用户点击下一步按钮进入登录表单(例如)。 现在,如果登录失败,那么用户将在登录活动,如果登录成功?

如果登录成功,那么你必须开始另一个活动。 这意味着第三项活动将开始,仍然有两个活动正在运行。 在这种情况下,使用startActivityForResult会很好。 登录成功后,将OK数据发送回第一个活动并关闭登录活动。 现在,当收到数据,然后开始第三个活动,并使用完成关闭第一个活动。

你可以试试这个:

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { finish(); return true; } return super.onKeyDown(keyCode, event); } 
 @Override public void onBackPressed() { super.onBackPressed(); } 

如果你想在按钮上点击返回然后简单地放

 bbsubmit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); 

尝试这是行为,因为你必须按回来的按钮

 finish(); onBackPressed(); 

除非您在调用活动上编写了finish() ,否则默认情况下所有新的活动/意图都具有回退/前一个行为。

把这个添加到你的onCLick()方法中,它会回到你以前的活动

完();

或者你可以使用这个。 它对我来说是完美的

  @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if ( id == android.R.id.home ) { finish(); return true; } return super.onOptionsItemSelected(item); } 

我建议NavUtils.navigateUpFromSameTask(),这很容易,很简单,你可以从谷歌开发人员了解它。我愿意帮助你!

除了所有提到的答案之外,他们仍然是这样做的另一种方式,可以说你有两个班,A班和B班。

类A,你做了一些活动,如复选框选择,打印出一些数据,意图到类B.类B,你想传递多个值到类A和维持以前的状态类A,你可以使用,尝试这种替代方法或下载源代码来演示这一点

http://whats-online.info/science-and-tutorials/125/Android-maintain-the-previous-state-of-activity-on-intent/

要么

http://developer.android.com/reference/android/content/Intent.html

  @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if ( id == android.R.id.home ) { finish(); return true; } return super.onOptionsItemSelected(item); } 

试试这个工具在后退按钮上作为硬件后退按钮

试试这个,第一个活动

 Intent mainIntent = new Intent(Activity1.this, Activity2.class); this.startActivity(mainIntent); 

在你的第二个活动

 @Override public void onBackPressed() { this.finish(); }