Android:返回上一个活动
我想在android应用上做一些简单的事情。 怎么可能回到以前的活动。
我需要什么代码才能回到以前的活动
Android活动存储在活动堆栈中。 回到之前的活动可能意味着两件事情。
-
您使用startActivityForResult从另一个活动中打开了新的活动。 在这种情况下,您可以从代码中调用finishActivity()函数,它将使您回到之前的活动。
-
跟踪活动堆栈。 无论何时用意图启动新的活动,都可以指定一个意向标志,如
FLAG_ACTIVITY_REORDER_TO_FRONT
或FLAG_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
是最简单的方法
请参阅返回上一个活动的详细信息
使用意向启动第二个活动(根据您的要求使用startActivity
或startActivityForResult
)。 现在当用户按下返回按钮时,顶部的当前活动将被关闭,并显示前一个活动。
现在让我们假设你有两个活动,一个是为用户选择一些设置,如语言,国家等,选择后,用户点击下一步按钮进入登录表单(例如)。 现在,如果登录失败,那么用户将在登录活动,如果登录成功?
如果登录成功,那么你必须开始另一个活动。 这意味着第三项活动将开始,仍然有两个活动正在运行。 在这种情况下,使用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://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(); }