[英]go to activity to activity in android (and also go back to previous activity)
[英]Android: Go back to previous activity
我想在 android 应用程序上做一些简单的事情。 go 怎么可能回到之前的活动。
我需要什么代码才能 go 返回上一个活动
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)
方法中通过检查项目 ID 来检查android.R.id.home
与R.id.home
中提到的R.id.home
不同。
尝试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();
将此添加到您的 onCLick() 方法中,它将返回到您之前的活动
完成();
或者你可以使用这个。 它非常适合我
@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);
如果您已正确设置带有活动父级的 AndroidManifest.xml 文件,则可以使用:
NavUtils.navigateUpFromSameTask(this);
这是您孩子的活动。
试试这个,因为你必须按下后退按钮
finish();
super.onBackPressed();
遇到了同样的问题
finish(); OR super.onBackPressed();
对我来说工作得很好,两者都工作得一样,但没有return
您可以显式调用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);
}
默认情况下,所有新活动/意图都具有后退/前一行为,除非您在调用活动上编写了finish()
代码。
@Override
public void onBackPressed() {
super.onBackPressed();
}
如果你想点击按钮返回然后简单地把
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
我推荐NavUtils.navigateUpFromSameTask(),它很简单也很简单,你可以从google developer那里学习。希望我能帮助你!
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
试试这个,它既适用于工具栏后退按钮,也适用于硬件后退按钮。
有几种情况可以返回到您之前的活动:
案例 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
活动A.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
试试这个,第一个活动
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
在你的第二个活动中
@Override
public void onBackPressed() {
this.finish();
}
要 go 通过单击后退按钮从一个活动返回到另一个活动,请使用下面给出的代码使用当前活动名称,然后使用目标活动。
@Override
public void onBackPressed() {
// do something on back.
startActivity(new Intent(secondActivity.this, MainActivity.class));
return;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.