Android:返回到之前的活动

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

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

736923 次浏览

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

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

或者如果你只支持android2.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

# EYZ1试试。这或多或少是后退按钮默认的功能。

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()关闭它。 如果你想使用向上按钮,你可以在onOptionsSelected(MenuItem item)方法中通过检查android.R.id.home的项目ID而不是评论中提到的R.id.home来捕捉它
你可以显式调用onBackPressed是最简单的方法
详细信息参见回到之前的活动

点击完成()就可以了。它将带您到前面的活动。

就在这个

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

这将使您到前一个活动保持其堆栈,并从堆栈中清除它之后的所有活动。

例如,如果堆栈为A->B->C->D,并且您以该标志开始B,则堆栈将为A->B

你可以试试这个:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {


finish();
return true;
}
return super.onKeyDown(keyCode, event);
}

所有新的活动/意图默认都有back/previous行为,除非你在调用活动上编码了finish()

使用intent启动第二个活动(根据您的需求使用startActivitystartActivityForResult)。现在当用户按下后退按钮时,上面的当前活动将被关闭,上一个活动将被显示。

现在假设您有两个活动,一个用于为用户选择一些设置,如语言、国家等,选择后,用户单击Next按钮进入登录表单(例如)。现在如果登录不成功,那么用户将处于登录活动中,如果登录成功怎么办?

如果登录成功,那么您必须启动另一个活动。这意味着将启动第三个活动,并且仍然有两个活动正在运行。在这种情况下,最好使用startActivityForResult。当登录成功时,将OK数据发送回第一个活动并关闭登录活动。现在,当接收到数据时,然后使用finish启动第三个活动并关闭第一个活动。

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

NavUtils.navigateUpFromSameTask(this);

这是你的儿童活动。

@Override
public void onBackPressed() {
super.onBackPressed();
}

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

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

只需调用这些方法来完成当前活动或通过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);

我建议使用NavUtils.navigateUpFromSameTask(),它很简单,你可以从谷歌开发人员那里学习。希望我能帮到你!

试试这个动作,因为你必须按后退键

finish();
super.onBackPressed();

除了上面提到的答案,还有另一种方法,假设你有两个类,A类和B类。

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

# EYZ0

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

尝试一下,它在工具栏后退按钮硬件返回按钮上都可以工作。

试试这个, 第一项活动< / p >

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

在第二个活动中

@Override
public void onBackPressed() {
this.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);
}

同样的问题

finish();  OR super.onBackPressed();

工作对我来说很好,两者都一样,但没有运气与return

有一些情况可以回到你之前的活动:

案例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.

首先,你需要记住的是,如果你想回到前一个活动。然后当使用Intent转到另一个活动时,不要调用finish()方法。

在此之后,您有两种方法从当前活动返回到前一个活动:

简单地调用:

finish()

super.onBackPressed();

要从一个活动返回到另一个点击返回按钮使用下面给出的代码使用当前活动名称,然后是目标活动。

@Override
public void onBackPressed() {
// do something on back.
startActivity(new Intent(secondActivity.this, MainActivity.class));
return;
}