如何根据Android中的条件选择启动Activity

时间:2016-06-09 15:26:57

标签: android

如何动态选择应用程序的启动活动

以此方案为例:用户首次打开应用时,会看到 AuthenticationActivity ,之后,他会看到 MainActivity 。如果他退出,他将再次看到 AuthenticationActivity

想要使用启动画面或类似内容,我想知道是否有任何方法可以执行此操作。

我在考虑检查 MainActivity onCreate 方法中是否有任何帐户,然后再调用 setContentView ,并显示< strong> AuthenticationActivity ,如果没有,但它对我没有感觉。

2 个答案:

答案 0 :(得分:6)

你可以这样做:

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启动您的应用。

答案 1 :(得分:0)

您也可以将MainActivity设置为LoginActivity的父级,将LoginActivity设置为Main / Launcher,如果已经登录则调用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>

不是回到最后一个活动,而是启动父活动。