0

我有 2 个活动,它们是:主要活动和登录活动。当登录活动中登录成功时,意图将打开主要活动。问题是每次我按下后退按钮时,登录活动都会再次打开。我想最小化应用程序而不是再次打开登录活动。如果正在登录,我使用共享首选项来标记我的应用程序。如果用户已登录,我将布尔值设置为 true。我使用共享首选项。并像这样使用 cekLogin() :

private boolean cekLogin() {
        boolean login;
        login = config.getBoolean("login", false);
        return login;
    }

config 是我的共享偏好。

if(cekLogin){
//do not open login activity again when back button pressed <--- i don't know how to do this
}
4

5 回答 5

1

将此代码放入您的 login.java 文件中

//Assuming this is the part where you open the second activity:
Intent intent = new Intent(this, secondActivity.java);
startActivity(intent);
finish();

当您单击第二个活动上的后退按钮时,应用程序将在您完成登录活动后返回主页。

于 2013-11-06T03:38:46.513 回答
1

在您的 AndroidManifest.xml 中,在 LoginActivity 标记中添加此内容:
android:noHistory="true"
这将关闭此活动的历史记录,以便当您按下返回按钮时,将始终跳过此活动。由于只有在登录成功后才能进入 MainActivity,所以我认为这没问题。

于 2013-11-06T03:47:11.770 回答
0

您可以覆盖onBackPressed()以便当用户按下应用程序时关闭,而不是返回到上一个活动。

或者您可以在开始一项活动之后完成()上一个活动。

于 2013-11-06T03:43:32.157 回答
0
The problem is everytime i press back button the login activity is opened again.

为此,您有两个选择:要么完成登录活动,然后转到主要活动,要么您可以覆盖该方法onBackPressed()

于 2013-11-06T03:46:43.660 回答
0

当登录成功时,将值存储在 sharedpref 之前,您必须首先检查他们是否已经在 sharedpref 中登录,如果是,则它将直接打开主要活动,否则打开登录屏幕。

 if(isLogin)
          {
                  startActivity(new Intent(SplashScreenActivity.this, MainActivity.class));
             }
              else
              {
                  startActivity(new Intent(SplashScreenActivity.this, LoginActivity.class));

              }

其中 isLogin 是一个布尔变量,首先声明为 false,如果它已登录成功,则在 sharedpref 中将值更改为 true

于 2013-11-06T04:16:49.627 回答