Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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 - Fatal编程技术网

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

Android中如何根据条件选择启动活动,android,Android,如何动态选择应用程序的启动活动 以这个场景为例:用户第一次打开应用程序时,他将看到AuthenticationActivity,之后,他将看到MainActivity。如果他注销,他将再次看到身份验证活动 我不想使用闪屏或类似的东西,我想知道是否有办法做到这一点 我想在调用setContentView之前,先检查main活动的onCreate方法中是否有帐户,如果没有,则显示AuthenticationActivity,但我觉得不太合适。您可以这样做: public class Navigato

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

以这个场景为例:用户第一次打开应用程序时,他将看到AuthenticationActivity,之后,他将看到MainActivity。如果他注销,他将再次看到身份验证活动

不想使用闪屏或类似的东西,我想知道是否有办法做到这一点


我想在调用setContentView之前,先检查main活动的onCreate方法中是否有帐户,如果没有,则显示AuthenticationActivity,但我觉得不太合适。

您可以这样做:

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

并使用此
导航活动启动您的应用程序

您还可以将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>

...
...

它不返回上一个活动,而是启动父活动。

您的解决方案有效。或者,您可以先启动AuthenticationActivity,如果有帐户,只需重定向到mainactivity即可。如果您在
onCreate
中完成并启动一个新活动,则该活动对用户不可见。您可以创建一个基本活动,并从中继承主活动和验证活动,然后在基本活动中的onCreate方法中,检查帐户并显示正确的活动我是否必须使用活动类扩展NavigatorActivity,还是它也可以是AppCompatActivity?@Ady96没关系,它也可以是AppCompatActivity。我正在这样做,但主活动尚未启动,是否还有其他步骤您忘记提及?