回答(23)
2 years ago
如果您已正确设置具有活动父级的AndroidManifest.xml文件,则可以使用:
NavUtils.navigateUpFromSameTask(this);
这是您的孩子活动 .
2 years ago
默认情况下,所有新活动/意图都具有后退/上一行为,除非您在调用活动上编码 finish() .
2 years ago
你想控制后退按钮的行为吗?您可以通过两种方法之一覆盖后退按钮(转到特定活动) .
适用于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;
}
2 years ago
只需调用这些方法即可完成当前活动或通过onBackPressed返回
finish();
要么
onBackPressed();
2 years ago
Android活动存储在活动堆栈中 . 回到之前的活动可能意味着两件事 .
您使用 startActivityForResult 从另一个活动中打开了新活动 . 在这种情况下,您只需从代码中调用 finishActivity() 函数,它将返回上一个活动 .
跟踪活动堆栈 . 每当您使用intent启动新活动时,您都可以指定意图标记,如 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 .
2 years ago
只是这个
super.onBackPressed();
2 years ago
@Override
public void onBackPressed() {
super.onBackPressed();
}
如果你想要按钮点击返回然后简单地把
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
2 years ago
你可以明确地调用 onBackPressed 是最简单的方法
有关详细信息,请参阅Go back to previous activity
2 years ago
使用intent启动第二个活动(根据您的要求使用 startActivity 或 startActivityForResult ) . 现在,当用户按下后退按钮时,顶部的当前活动将被关闭,之前的活动将被显示 .
现在假设您有两个活动,一个用于为用户选择一些设置,如语言,国家等,选择后,用户单击“下一步”按钮转到登录表单(例如) . 现在如果登录失败,那么用户将登录登录活动,如果登录成功怎么办?
如果登录成功,则必须启动另一项活动 . 这意味着将启动第三个活动,仍然有两个活动正在运行 . 在这种情况下,最好使用 startActivityForResult . 登录成功后,将OK数据发送回第一个活动并关闭登录活动 . 现在,当收到数据时,然后启动第三个活动并使用完成关闭第一个活动 .
2 years ago
我建议使用NavUtils.navigateUpFromSameTask(),这很容易也很简单,你可以从谷歌开发者那里学到它 . 希望我能帮到你!
2 years ago
在onCLick()方法中添加它,它将返回到您之前的活动
完成();
或者您可以使用它 . 它对我来说很完美
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
2 years ago
你可以试试这个:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
2 years ago
得到了同样的问题和
finish(); OR super.onBackPressed();
我工作得很好,两者都一样,但没有运气 return
2 years ago
回到之前的活动的情况很少:
Case 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();
Case 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.
2 years ago
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
试试这个它在 toolbar back button 上同时适用于 hardware back button .
2 years ago
试试Activity#finish() . 这或多或少是默认情况下后退按钮的作用 .
2 years ago
试试这个,第一个活动
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
在你的第二个活动中
@Override
public void onBackPressed() {
this.finish();
}
2 years ago
只需点击 finish() 即可 . 它将带你到上一个活动 .
2 years ago
如果你想去只是想去以前的活动使用
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);
2 years ago
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
这将使您进入之前的活动,保持其堆栈并清除堆栈后的所有活动 .
例如,如果堆栈是A-> B-> C-> D并且您使用此标志启动B,则堆栈将为A-> B
2 years ago
从 FirstActivity 使用 startActivityForResult() 方法调用 SecondActivity
对于例:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
在 SecondActivity 中设置要返回 FirstActivity 的数据 . 如果你没有设置任何 .
例如:如果要发回数据,请在 secondActivity 中:
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
如果您不想返回数据:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();
现在在 FirstActivity 类中编写 onActivityResult() 方法的以下代码 .
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}//onActivityResult
2 years ago
Try this is act as you have to press back button
finish();
onBackPressed();