提问人:Ionut Ciuta 提问时间:6/9/2016 最后编辑:earthw0rmjimIonut Ciuta 更新时间:12/3/2017 访问量:2624
如何在Android中根据条件选择启动活动
How to choose starting Activity based on condition in Android
问:
如何动态选择应用程序的起始活动?
以此场景为例:用户第一次打开应用时,他将看到 AuthenticationActivity,之后,他将看到 MainActivity。如果他注销,他将再次看到 AuthenticationActivity。
我不想使用初始屏幕或类似的东西,我想知道是否有任何方法可以做到这一点。
在调用 setContentView 之前,我正在考虑检查 MainActivity 的 onCreate 方法中是否有任何帐户,如果没有,则显示 AuthenticationActivity,但对我来说感觉不行。
答:
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 没有启动,您还有其他步骤忘记提及吗?
评论
onCreate