我为此搜索了很多,但没有给出解决方案。我会向你解释一下这个场景: 我的应用程序是登录页面 - >用户验证页面 - >主页(主页有多个菜单和页脚 - 水平滚动视图)。应用程序登录仅在第一次或用户注销时发生。登录成功后,用户将导航到身份验证页面并完成登录活动。我的代码是
Intent loginIntent = new Intent(Login.this,UserAu.class);
loginIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(loginIntent);
finish();
成功验证后,用户将导航到应用程序主页,并再次完成验证活动。
Intent proceedIntent = new Intent(UserAu.this,Home.class);
proceedIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
proceedIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(proceedIntent);
finish();
现在用户在主页中,他点击了菜单1,结果是活动A,然后是活动B.来自A。这些活动没有完成。注册按钮是页脚(这是一个扩展线性布局的类)和用户注销,当前活动已完成并使用
导航到登录屏幕 Intent loginscreen=new Intent(context,Login.class);
loginscreen.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
loginscreen.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(loginscreen);
((Activity) context).finish();
我的问题发生在用户从登录页面按回按钮,导航到活动A. 我在登录类
上尝试过这个 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
}
但是现在当用户再次获取应用程序时,它会导航到主页。如果用户按下后退按钮,应用程序将关闭,之后只会加载登录页面。我搜索了一个解决方案,但没有结果。 请给我一个解决方案。谢谢。
答案 0 :(得分:0)
试试这个
<activity
android:name="AccountSetting"
android:launchMode="singleTop"
android:screenOrientation="portrait" >
</activity>
在清单文件中执行此条目
答案 1 :(得分:0)
发生此问题的原因是您正在完成登录活动和身份验证活动,然后您正在使用Intent.FLAG_ACTIVITY_CLEAR_TOP
和Intent.FLAG_ACTIVITY_NEW_TASK
。
这些标志似乎不适用于已完成的活动
我的应用程序面临同样的问题,我所做的是没有完成这些活动,然后使用上面写的标记。现在,如果您没有完成这些活动,那么用户将从活动A导航回来,他将再次进入登录或身份验证活动。为此我解释了backPressed并在我的家庭活动中将其留空。
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
//do nothing
}
用户将使用主页按钮导航回设备。
答案 2 :(得分:0)
我想..当你点击主页上的背面时...应用程序应该关闭..如果这是你想要的那么试试这个
public boolean onKeyDown(int keyCode, KeyEvent event) { //Handle the back button if(keyCode == KeyEvent.KEYCODE_BACK) { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); return true; } else { return super.onKeyDown(keyCode, event); } }
答案 3 :(得分:0)
试试这个
在登录界面中,我们将操作系统的主屏幕显示为tpo,这相当于movetasktoback
@Override
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
答案 4 :(得分:0)
在AndroidManifest.xml中试试这个。对于不应再次启动的活动。
<activity
....
android:excludeFromRecents="true"
android:exported="true"
android:launchMode="singleTop"
</activity>