我想在Android应用上做一些简单的事情。 怎么可能回到以前的活动。
回到之前的活动我需要什么代码
答案 0 :(得分:455)
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
不同,与评论中提到的{{1}}不同。
答案 1 :(得分:215)
试试Activity#finish()
。这或多或少是默认情况下后退按钮的作用。
答案 2 :(得分:74)
只需点击完成()即可。它将带您进入上一个活动。
答案 3 :(得分:65)
就是这个
super.onBackPressed();
答案 4 :(得分:30)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
这将使您进入之前的活动,保持其堆栈并清除堆栈后的所有活动。
例如,如果堆栈是A-> B-> C-> D并且您使用此标志启动B,则堆栈将为A-> B
答案 5 :(得分:19)
您是否想要控制后退按钮的行为?您可以通过以下两种方法之一覆盖后退按钮(转到特定活动)。
适用于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
答案 6 :(得分:18)
只需调用这些方法即可完成当前活动或返回onBackPressed
finish();
OR
onBackPressed();
答案 7 :(得分:13)
如果你想去之前的活动使用
key => order
OR
finish();
如果您想进入第二项活动或以下活动,请使用以下内容:
onBackPressed();
答案 8 :(得分:11)
如果您已正确设置包含活动父级的AndroidManifest.xml文件,则可以使用:
NavUtils.navigateUpFromSameTask(this);
这是您的孩子活动。
答案 9 :(得分:10)
在onCLick()方法中添加它,它将返回到您之前的活动
结束();
或者您可以使用它。它对我来说很完美
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
答案 10 :(得分:7)
您可以明确地致电onBackPressed
是最简单的方式
有关详细信息,请参阅Go back to previous activity
答案 11 :(得分:6)
遇到同样的问题和
finish(); OR super.onBackPressed();
对我来说很好,两者都一样,但return
答案 12 :(得分:6)
使用intent启动第二个活动(根据您的要求使用startActivity
或startActivityForResult
)。现在,当用户按下后退按钮时,顶部的当前活动将被关闭,之前的活动将被显示。
现在假设您有两个活动,一个用于为用户选择一些设置,如语言,国家等,选择后,用户点击“下一步”按钮转到登录表单(例如)。现在如果登录失败,那么用户将登录登录活动,如果登录成功怎么办?
如果登录成功,则必须开始另一项活动。这意味着将启动第三个活动,并且仍然有两个活动正在运行。在这种情况下,最好使用startActivityForResult
。登录成功后,将OK数据发送回第一个活动并关闭登录活动。现在,当收到数据时,然后启动第三个活动并使用完成关闭第一个活动。
答案 13 :(得分:5)
你可以试试这个:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 14 :(得分:5)
尝试此操作,因为您必须按后退按钮
finish();
onBackPressed();
答案 15 :(得分:4)
@Override
public void onBackPressed() {
super.onBackPressed();
}
如果你想点击按钮,请点击返回然后直接输入
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
答案 16 :(得分:4)
默认情况下,所有新活动/意图都有后退/上一行为,除非您在呼叫活动上编码finish()
。
答案 17 :(得分:3)
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.LinkedList;
/**
* Created by fang on 7/30/17.
*/
public class DequeMethods {
public static void main(String[] args){
Deque<Integer> queue = new LinkedList<>();
Deque<Integer> stack = new LinkedList<>();
for(int i=0;i<100;i++){
queue.offer(i);
stack.push(i);
}
System.out.println(queue.peek());
System.out.println(stack.peek());
}
}
尝试使用工具栏后退按钮作为硬件后退按钮。
答案 18 :(得分:2)
我建议使用NavUtils.navigateUpFromSameTask(),它很简单,非常简单,你可以从谷歌开发者那里学到它。希望我能帮到你!
答案 19 :(得分:0)
除了所有提到的答案之外,他们仍然是另一种方法,假设你有两个班,A班和B班。
A类你做了一些活动,如复选框选择,打印出一些数据和意图到B类。 B类,你想将多个值传递给A类并保持以前的A类状态,你可以使用,试试这个替代方法或下载源代码来演示这个
或
http://developer.android.com/reference/android/content/Intent.html
答案 20 :(得分:0)
试试这个, 第一项活动
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
在你的第二个活动中
@Override
public void onBackPressed() {
this.finish();
}
答案 21 :(得分:0)
很少有情况可以返回到您以前的活动:
案例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.
答案 22 :(得分:0)
此后,您有两种方法可以从当前活动返回到先前活动:
只需调用:在按钮点击监听器下的finish()
,
要么
覆盖以下使用系统后退按钮进行后退的方法:
@Override
public void onBackPressed() {
super.onBackPressed();
}