关闭Android中以前的活动
我是android新手,正在尽我最大的努力 我有一份有三项活动的申请, 1登录页面 2.主页 3.注册页 加载的第一个活动是登录 当用户给出正确的用户名和密码时,我允许进入主页 在这里,我面临一个问题,当我点击后退按钮时,我将再次进入登录屏幕,应用程序应该不会关闭 在创建意图和加载主活动时,我也在使用finish() 我尝试了onBackPressed()方法,但它对我不起作用关闭Android中以前的活动,android,android-activity,onbackpressed,Android,Android Activity,Onbackpressed,我是android新手,正在尽我最大的努力 我有一份有三项活动的申请, 1登录页面 2.主页 3.注册页 加载的第一个活动是登录 当用户给出正确的用户名和密码时,我允许进入主页 在这里,我面临一个问题,当我点击后退按钮时,我将再次进入登录屏幕,应用程序应该不会关闭 在创建意图和加载主活动时,我也在使用finish() 我尝试了onBackPressed()方法,但它对我不起作用 public void onBackPressed() { // Hom
public void onBackPressed() {
// HomeActivity.this.finish();
super.onBackPressed();
}
我的清单文件是
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Example.MyProject">
<application
android:name=".MyApplication"
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@drawable/abc"
android:label="@string/app_name_display"
android:supportsRtl="true"
android:largeHeap="true"
android:manageSpaceActivity=".LoginActivity"
android:theme="@style/AppTheme">
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".SyncData" >
</service>
<activity android:name=".HomeActivity"
android:screenOrientation="portrait"/>
<activity android:name=".Registration" />
</application>
</manifest>
试试这个
private Boolean exit = false;
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
if (exit) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
} else {
Toast.makeText(this, "Tap again to exit.", Toast.LENGTH_SHORT)
.show();
exit = true;
}
}
finish()
您将无法再次访问
LoginActivity
。只需在第二个活动中覆盖您的onBackPressed,而不调用
super.onBackPressed();
例如,如下所示覆盖onBackPressed:
@Override
public void onBackPressed() {
//Do something else here, maybe prompt the user if he needs to exit the app.
finishAffinity();;//If you want to close the application.
}
我想添加类似这样的内容,以便于用户使用
@Override
public void onBackPressed() {
android.support.v7.app.AlertDialog.Builder alertDialogBuilder = new android.support.v7.app.AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Do you wish to exit the app?");
alertDialogBuilder.setPositiveButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int arg1) {
dialog.dismiss();
}
});
alertDialogBuilder.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finishAffinity();
}
});
android.support.v7.app.AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
另一个用户被咬了
如果软件开发人员花在解决这个问题上的每一小时我都有一美元,我就不必再工作了
谷歌:修复它 startActivity(新意图(上下文、HomeActivity.class));完成()@A.Nitesh在您的
onBackPressed
中不使用此选项,而是在您将用户重定向到HomeActivity
时使用此选项。是的,当我开始新活动时,我将在onBackPressed()方法中关闭旧活动buy calling finish(),我只使用super.onBackPressed()@Sandiskp然后如何在不使用Backpress的情况下处理此问题在正常情况下其工作正常,但在我的分配中有一些场景,例如,在注销时,我询问他们是否要注销(是/否)如果用户单击“是”,则当我按下“后退”按钮时,将在此处处理注销agian将进入主屏幕如果我们喜欢此“后退”按钮本身将不起作用这不是我的要求Nitesh,正如我从问题中了解到的,后退不应起作用。不,不,后退按钮不应引导我们进行登录活动,考虑一个例子,如脸谱网,如果我们登录一次,应用程序将打开,同时关闭应用程序,它不会导致登录页面Nai AM不关心警报消息和它们的功能性,这里的主要问题是后退,我要到以前的活动,不应该发生。为了让你明白,我要告诉你一件事。注销后,当我按下后退按钮时,它将启动主页活动当您从Login
启动home
时,您是否也调用finish()
?如果是这样,在Login
中按BACK键不应返回主页
。请将您的清单添加到我正在呼叫的问题中,但在注销后,当我按下后退按钮时,它正在加载主屏幕,这不是标准的Android行为。你可能会看到这个讨厌的Android错误:请强制停止你的应用程序,然后从主屏幕再次启动它。然后登录并按“上一步”按钮,查看您的HomeActivity
是否仍然显示。@DavidWasser,您是对的,谢谢您的帮助链接。对此,我深表歉意。很多人都被这种错误所困扰:-(
@Override
public void onBackPressed() {
android.support.v7.app.AlertDialog.Builder alertDialogBuilder = new android.support.v7.app.AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Do you wish to exit the app?");
alertDialogBuilder.setPositiveButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int arg1) {
dialog.dismiss();
}
});
alertDialogBuilder.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finishAffinity();
}
});
android.support.v7.app.AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}