gpt4 book ai didi

android - 当我去一个 Activity 时清除 Activity 堆栈

转载 作者:太空宇宙 更新时间:2023-11-03 12:01:24 26 4
gpt4 key购买 nike

我正在开发一个包含多个 Activity 的应用程序,问题是我希望用户能够通过按一个按钮来注销。

假设我们有 4 个名为 A、B、C、D 的 Activity。 Activity 导航,如 B->C->D。

在 Activity D 上,用户可以选择注销。当用户单击“注销”按钮时,他会转到导航中未调用的 Activity A。现在,用户点击后退按钮,然后他就回到了之前的 Activity ,比如 Activity D。

我已经尝试使用以下两个标志启动 Activity:

Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

有人能帮忙吗?

最佳答案

好吧,我给自己做了一个小项目来模拟你所拥有的。我将在下面的代码中省略导入。另外,请阅读所有代码和注释,我写它们并不是为了让您跳过它们。我们称这些类为 splash、login、page1、page2 和 page3。在您的 splash 类中,在 onCreate() 方法之前,让我们放一些东西。

package com.test.jeets;

public class splash extends Activity {

//Add all of these right here!
public static boolean loggedin = false;
public static int sdk = new Integer(Build.VERSION.SDK).intValue();

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
//This is your splash screen, all the code goes here!
}
}

这就是您的启动画面!完毕!对于登录屏幕,我们要确保它不能返回到初始屏幕,而是在按下返回时退出应用程序。这很简单!让我们重写后退按钮并使用 moveTaskToBack(true)

package com.test.jeets;

public class login extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);

//This is the login page stuff. Nothing special needs done here.
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (splash.sdk < 5 && keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
onBackPressed();
}

return super.onKeyDown(keyCode, event);
}
//This will make the back button exit the app to the home screen.
@Override
public void onBackPressed() {
moveTaskToBack(true);
return;
}
//If the user leaves the app from the login screen while not logged in, they are returned to the splash screen.
@Override
public void onRestart() {
super.onRestart();
if(splash.loggedin == false){
Intent i = new Intent(login.this, splash.class);
startActivity(i);}
}
}

现在,大功告成了!让我们转到您的第一个页面(您登录后转到的页面)并在 onCreate() 方法中添加一行

splash.loggedin = true;

您可能需要考虑让用户退出此页面,同时将他们注销。没有必要,但肯定可行。

您需要做的最后一件事是在用户使用注销按钮注销时将该变量设置为 false。所以在按钮的代码中,在调用再次启动登录 Activity 之前,只需添加 splash.loggedin = false;。现在,当单击该按钮时,它将注销用户,将变量设置为 false,并将他们带到登录屏幕。就像我说的,我用一个简单的布局和 Activity 之间真正的基本切换来测试它,它对我来说效果很好。

关于android - 当我去一个 Activity 时清除 Activity 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6585712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com