如何根据数据在运行时选择第一个活动?

时间:2011-02-05 09:18:35

标签: android android-activity uiviewcontroller

我刚开始使用Android,我想我错过了一些东西。 在Android中,您似乎在开发时决定哪个活动将首先在您的应用程序中显示。

我想以这样的方式编写我的应用程序:某种集中式控制器开始执行,它决定哪个活动应该是第一个 (例如,基于从某处获得的一些数据)

是可以做到的,如果是的话,怎么做? 感谢。

3 个答案:

答案 0 :(得分:6)

大多数人通过启动一个只需要获取所需配置的活动来启动“真实”活动。一个小问题是,首次启动的活动将在任务堆栈上,但如果您为初始活动设置android:noHistory =“true”,则该过程应该对用户不可见。

答案 1 :(得分:3)

以下方法可用于在首次启动应用时显示教程屏幕。

<强>的AndroidManifest.xml

<activity android:name=".activities.LaunchActivity"
    android:noHistory="true"
    android:theme="@android:style/Theme.NoDisplay">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name=".onboarding.OnboardingActivity"/>

<activity android:name=".activities.MainActivity"/>

<强> LaunchActivity.java

public class LaunchActivity extends Activity {

    public static final String FIRST_APP_LAUNCH = "com.your.package.name";

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

        if (isFirstAppLaunch()) {
            setFirstAppLaunch(false);
            startActivity(new Intent(this, OnboardingActivity.class));
        } else {
            startActivity(new Intent(this, MainActivity.class));
        }

        finish();
    }

    private boolean isFirstAppLaunch() {
        SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
        return preferences.getBoolean(FIRST_APP_LAUNCH, true);
    }

    private void setFirstAppLaunch(boolean value) {
        SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean(FIRST_APP_LAUNCH, value);
        editor.apply();
    }
}

答案 2 :(得分:2)

我想知道这有多么艰难。在检查数据开始另一个活动而不设置主要活动的视图内容之后,在onCreate方法的主Activity中。