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

How to choose starting Activity based on condition in Android

提问人:Ionut Ciuta 提问时间:6/9/2016 最后编辑:earthw0rmjimIonut Ciuta 更新时间:12/3/2017 访问量:2624

问:

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

以此场景为例:用户第一次打开应用时,他将看到 AuthenticationActivity,之后,他将看到 MainActivity。如果他注销,他将再次看到 AuthenticationActivity

我不想使用初始屏幕或类似的东西,我想知道是否有任何方法可以做到这一点。

在调用 setContentView 之前,我正在考虑检查 MainActivityonCreate 方法中是否有任何帐户,如果没有,则显示 AuthenticationActivity,但对我来说感觉不行。

人造人

评论

2赞 njzk2 6/9/2016
您的解决方案有效。或者,您可以先启动 AuthenticationActivity,如果有帐户,只需重定向到 mainactivity。如果在 中完成并启动新活动,则用户看不到该活动。onCreate
0赞 Saeed-rz 6/9/2016
您可以创建一个基本活动并继承 main 并从中验证活动,然后在基本活动的 onCreate 方法中,检查帐户并显示正确的活动

答:

16赞 earthw0rmjim 6/9/2016 #1

你可以做这样的事情:

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赞 Ady96 2/3/2019
我是否必须使用 Activity 类扩展 NavigatorActivity,或者它也可以是 AppCompatActivity?
2赞 earthw0rmjim 2/3/2019
@Ady96没关系,它也可以是 AppCompatActivity。
0赞 Alexandre Martin 6/9/2016 #2

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

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

评论

0赞 Alan Donizete 4/20/2019
我正在这样做,但 MainActivity 没有启动,您还有其他步骤忘记提及吗?