我正在制作一种社交网络应用。我正在其中实现注销功能。 在注销按钮上单击它应该导航到登录屏幕,但它现在导航到主页屏幕。我使用以下代码注销..
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.package.ACTION_LOGOUT");
registerReceiver(new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
System.out.println("onReceive Log out in progress");
Intent intent1 = new Intent(getApplicationContext(), Login.class);
startActivity(intent1);
finish();
}
}, intentFilter);
答案 0 :(得分:6)
使用以下注销。
yourintent.setflag(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
它可能对你有帮助
答案 1 :(得分:4)
简单地将意图提供给您的登录活动并将标志置于意图
inten1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
它将清除所有活动并导航到您的登录页面。
答案 2 :(得分:2)
这是一个堆栈问题。你需要处理它。我找到的最佳解决方案是在应用程序运行时将单个活动保持在堆栈中,并且在注销时只有登录屏幕将处于堆叠状态,如果用户按下后退按钮,他将看到主屏幕。
答案 3 :(得分:2)
对我来说有用的是使用某种全局内容跟踪你的登录状态:
public boolean loggedin = false;
然后在你的所有活动中,如果你已经注销,则覆盖onResume()和finish():
@Override
public void onResume() {
super.onResume();
if (!loggedin)
finish();
}
答案 4 :(得分:1)
试试这个:
Intent intent = new Intent(getApplicationContext(), Login.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
Toast.makeText(this, "Signed out", Toast.LENGTH_SHORT).show();
startActivity(intent);
finish();
答案 5 :(得分:0)
首先对代码进行这些更改
Intent intent = new Intent(getApplicationContext(),Login.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
然后删除广播接收器中写入的完成(); 。 祝你好运。