我想在android应用程序上做一些简单的事情。 怎么可能回到以前的活动。
我需要什么代码回到以前的活动
我想在android应用程序上做一些简单的事情。 怎么可能回到以前的活动。
我需要什么代码回到以前的活动
您是否想要控制后退按钮的行为?您可以通过以下两种方法之一重写后退按钮(以转到特定的活动)。
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
Android活动存储在活动堆栈中。回到以前的活动可能意味着两件事。
You opened the new activity from another activity with startActivityForResult. In that case you can just call the finishActivity() function from your code and it'll take you back to the previous activity. Keep track of the activity stack. Whenever you start a new activity with an intent you can specify an intent flag like FLAG_ACTIVITY_REORDER_TO_FRONT or FLAG_ACTIVITY_PREVIOUS_IS_TOP. You can use this to shuffle between the activities in your application. Haven't used them much though. Have a look at the flags here: http://developer.android.com/reference/android/content/Intent.html
正如注释中提到的,如果活动是用startActivity()打开的,那么可以用finish()关闭它。 如果你想使用向上按钮,你可以在onOptionsSelected(MenuItem item)方法中捕捉到,检查android.R.id.home的项目ID,而不是评论中提到的R.id.home。
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);
}
使用intent启动第二个活动(根据您的需求使用startActivity或startActivityForResult)。现在当用户按下后退按钮时,上面的当前活动将被关闭,上一个活动将被显示。
现在假设您有两个活动,一个用于为用户选择一些设置,如语言、国家等,选择后,用户单击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();
}
});
如果你想去只是想去以前的活动使用
finish();
OR
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);
除了上面提到的答案,还有另一种方法,假设你有两个类,A类和B类。
类A你做了一些活动,比如选择复选框,打印出一些数据和意图到类B。 类B,你想传递多个值给类A,并保持类A之前的状态,你可以使用,尝试这种替代方法或下载源代码来演示这一点
http://whats-online.info/science-and-tutorials/125/Android-maintain-the-previous-state-of-activity-on-intent/
or
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);
}
尝试一下,它既可以在工具栏返回按钮作为硬件返回按钮。
试试这个, 第一个活动
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);
}
有一些情况可以回到你之前的活动:
情况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()
OR
super.onBackPressed();
通过单击返回按钮从一个活动返回到另一个活动,使用下面给出的代码,使用当前活动名称,然后使用目标活动。
@Override
public void onBackPressed() {
// do something on back.
startActivity(new Intent(secondActivity.this, MainActivity.class));
return;
}