Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在运行时根据数据选择第一个活动?_Android_Android Activity_Uiviewcontroller - Fatal编程技术网

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

Android 如何在运行时根据数据选择第一个活动?,android,android-activity,uiviewcontroller,Android,Android Activity,Uiviewcontroller,我刚开始使用Android,我想我错过了一些东西。 在Android中,您似乎在开发时决定哪个活动将首先显示在应用程序中 我希望以这样一种方式编写我的应用程序:某种集中式控制器开始执行,它决定应该首先执行哪个活动 (例如,基于从某处获得的一些数据) 这有可能做到吗?如果有,如何做到? 谢谢。大多数人都是通过启动一个活动来完成的,该活动只需要选择它需要的配置,然后启动“真正的”活动。一个问题是,第一次启动的活动将在任务堆栈上,但是如果您为初始活动设置android:noHistory=“true”

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

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

这有可能做到吗?如果有,如何做到?
谢谢。

大多数人都是通过启动一个活动来完成的,该活动只需要选择它需要的配置,然后启动“真正的”活动。一个问题是,第一次启动的活动将在任务堆栈上,但是如果您为初始活动设置android:noHistory=“true”,那么用户应该看不到该过程。

我不知道这有什么困难。检查数据后,在onCreate方法的主活动中启动另一个活动,但不设置主活动的查看内容。

以下方法可用于在第一次应用程序启动时显示教程屏幕

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"/>
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();
    }
}