如何动态选择应用程序的启动活动?
以此方案为例:用户首次打开应用时,会看到 AuthenticationActivity ,之后,他会看到 MainActivity 。如果他退出,他将再次看到 AuthenticationActivity 。
我不想要使用启动画面或类似内容,我想知道是否有任何方法可以执行此操作。
我在考虑检查 MainActivity 的 onCreate 方法中是否有任何帐户,然后再调用 setContentView ,并显示< strong> AuthenticationActivity ,如果没有,但它对我没有感觉。
答案 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>
不是回到最后一个活动,而是启动父活动。