在创建应用程序时我遇到了架构问题。我想这样做:
我的一切都清楚地显示出来。顺便说说。当app用户处于菜单活动状态时,如果他按下后退按钮(不是注销方法),他就不会注销。 我是android的新手,有人可以给我一个建议吗? 我应该使用什么方法?
Intent menuIntent = new Intent(
"com.project.simplify.NewReviewActivity");
menuIntent.putExtra("user", user);
menuIntent.putExtra("link", realLink);
startActivity(menuIntent);
这是Logout方法:
Intent loginIntent = new Intent(this, LoginActivity.class);
loginIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(loginIntent);
finish();
我 如何解决 我的问题:
public static MenuActivity MenuActivityObject;
onCreate()
{
MenuActivityObject = this;
}
现在在logout方法中使用该对象来完成菜单活动:
Logout()
{
MenuActivity.MenuActivityObject.finish();
}
答案 0 :(得分:1)
当您从Activity
中的任何一个点击退出以启动LoginActivity
时,请使用Intent.FLAG_ACTIVITY_CLEAR_TASK
。这将清除堆栈中的所有先前Activity
。
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
当用户在MenuActivity
上按BACK时,系统将finish
MenuActivity
,用户将根据您的体系结构转到LoginActivity
。它会完美地运作
答案 1 :(得分:0)
如果您想在用户按下按钮时注销,可以在“菜单活动”中覆盖“onBackPressed”并调用“注销方法”。
答案 2 :(得分:0)
这是因为您在启动活动1时未关闭manu活动。
例如
MenuActivity
的OnCreate {
Intent inte = new Intent(context,Activity1.class);
startActivity(inte);
finish();
}
如果你不打电话"完成()" MenuActivity仍然存在。发布您的源代码。
答案 3 :(得分:0)
您的注销方法启动LoginActivity并终止上次启动的Activity,Activity1,Activity2或Activity3。
如果您在启动下一个活动时没有关闭MenuActivity,则MenuActivity会保留在堆栈中,因此当您注销时,启动LoginActivity,但如果用户按下后退按钮,系统会将LoginActivity替换为上一个活动堆栈,在本例中为MenuActivity。
答案 4 :(得分:0)
更改您的退出代码
Intent loginIntent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(loginIntent);
finish();