我想在android应用上做一些简单的事情。如何返回上一个活动。
我需要什么代码才能返回上一个活动
我想在android应用上做一些简单的事情。如何返回上一个活动。
我需要什么代码才能返回上一个活动
Answers:
Android活动存储在活动堆栈中。回到上一个活动可能意味着两件事。
您使用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)
通过检查注释中提到的与之android.R.id.home
不同的项目ID 来捕获该方法R.id.home
。
尝试Activity#finish()
。默认情况下,这或多或少是后退按钮的作用。
this.finish();
#
是一个指标,finish()
是Activity类的非静态方法。它不是有效的Java,但可以帮助您解释如何使用该方法。
.
,即:Activity.someStaticMethod()
只是这个
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();
如果您只想去以前的活动使用
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数据发送回第一个活动并关闭登录活动。现在,当接收到数据时,请启动第三个活动,并使用Finish关闭第一个活动。
有几种情况可以返回到您以前的活动:
情况1:如果您想将结果返回到先前的活动,则使用 ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivityForResult(intent,2);
FBHelperActivity.java
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
情况2: ActivityA-> FBHelperActivity ----> ActivityA
ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivity(intent);
FBHelperActivity.java
after getting of result call finish();
By this way your second activity will finish and because
you did not call finish() in your first activity then
automatic first activity is in back ground, will visible.
之后,您可以通过两种方式从当前活动返回到先前活动:
只需调用:finish()
在按钮单击侦听器下,或使用系统后退按钮覆盖以下方法来后退:
@Override
public void onBackPressed() {
super.onBackPressed();
}
除了所有提到的答案外,它们仍然是执行此操作的另一种方法,可以说您有两个类,即A类和B类。
您已经对A类进行了一些活动,例如复选框选择,打印了一些数据以及对B类的意图。B类,您想将多个值传递给A类并保持A类的先前状态,可以使用,尝试这种替代方法方法或下载源代码来证明这一点
要么
http://developer.android.com/reference/android/content/Intent.html