2016-06-09 68 views
1

如何动态选择我的应用程序的开始活动如何根据Android中的条件选择开始活动

就拿这样的场景:用户打开应用程序中的第一次,他会看到AuthenticationActivity,在那之后,他会看到MainActivity。如果他注销,他将再次看到AuthenticationActivity

希望使用闪屏或类似的东西,我不知道是否有这样做的任何方式。

我想检查是否有在MainActivity的onCreate方法的任何账户,呼吁的setContentView之前,并显示AuthenticationActivity如果没有,但感觉并不确定我。

+2

您的解决方案的工作原理。或者,您可以先启动AuthenticationActivity,如果有帐户,则只需重定向到mainactivity。如果你在'onCreate'完成并开始一个新的活动,它对用户是不可见的。 – njzk2

+0

您可以创建一个基本活动并从中继承主要和验证活动,然后在基本活动的onCreate方法中检查帐户并显示正确的活动 –

回答

3

你可以做这样的事情:

public class NavigatorActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Intent intent; 

     if (isAuthenticated) { 
      intent = new Intent(NavigatorActivity.this, MainActivity.class); 
     } else { 
      intent = new Intent(NavigatorActivity.this, 
       AuthenticationActivity.class); 
     } 

     startActivity(intent); 
     finish(); 
    } 
} 

而与此NavigatorActivity启动您的应用程序。

0

您还可以设置MainActivity LoginActivity的父,设置LoginActivity作为主/发射器和调用finish()如果已经登录。

<application ... > 
    ... 
    <!-- The main/home activity (it has no parent activity) --> 
    <activity 
     android:name="com.example.myfirstapp.MainActivity" ...> 
     ... 
    </activity> 
    <!-- A child of the main activity --> 
    <activity 
     android:name="com.example.myfirstapp.LoginActivity" 
     android:label="@string/title_activity_login" 
     android:parentActivityName="com.example.myfirstapp.MainActivity" > 
     <!-- Parent activity meta-data to support 4.0 and lower --> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.myfirstapp.MainActivity" /> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 

     </intent-filter> 

    </activity> 
</application> 

,而不是领回最后一个活动,它推出的父一。