如何在不调用Android中的其他活动的情况下启动活动?

时间:2017-01-13 17:49:13

标签: android android-activity

我有2项活动,LoginActivityMainActivity。在第一个活动中,我登录用户并将他重定向到MainActivity。我还在MainActivity创建了一个注销按钮,该按钮调用了这种注销方法:

private void signOut() {
    Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(new ResultCallback<Status>() {
        @Override
        public void onResult(Status status) {
            Intent intent = new Intent(MainActivity.this, LoginActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
    });
}

每次应用程序启动时,我都会检查用户是否已登录。如果用户已登录,则用户仍在MainActivity,如果没有,则会重定向到{{1} }。 问题是,当用户没有进入时,应用程序首先启动LoginActivity,然后启动MainActivity

这就是LoginActivity的样子:

AndroidManifest

如果用户未登录,如何在不打开<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".LoginActivity" /> 的情况下启动应用程序?

3 个答案:

答案 0 :(得分:2)

您创建第三个Activity,这是您真正的启动活动。然后就确定哪一个应该是下一个。

@Override
public void onCreate(Bundle si) {
   ...
   if (isLoggedIn()) {
      goToMain();
   } else {
      goToLogin();
   }

   finish();
}

这将打开一个活动,决定去哪里。活动加载时,您可能会在屏幕上看到轻微的闪烁。这是关于样式transparent activity的讨论。 `

答案 1 :(得分:2)

我认为你最好能做的是在MainActivity中有两个布局,比如MainLayoutLoginLayout,如果用户没有登录,则隐藏MainLayout,并在同一个活动中显示LoginLayout,即MainActivity,并让用户登录,然后再次隐藏LoginLayout并显示MainLayout。或者,不是隐藏LoginLayout,而是重新启动活动。

将这些条件置于onCreate()陈述下if-else的开头。

有点像这样(在onCreate的{​​{1}}中):

MainActivity

答案 2 :(得分:0)

将决策代码移至第三个活动并将其设置为新的启动活动。

     if (condition1) {
         startActivity(intent1);
     }
     else {
        startActivity(intent2);
     } 

并改变新活动的主题如下

    android:theme="@android:style/Theme.NoDisplay