我正在尝试创建一个应用。该应用程序会在启动时检查共享首选项值。
1)如果设置了共享首选项,它应该启动activity1 2)如果未设置共享首选项,则应启动activity2
那么我用什么布局来显示主屏幕的活动?主要活动用于启动activity1或activity2。有没有办法从主活动中启动activity1或activity2而不使用主活动的任何布局?
我不打算向用户显示主要活动。显示活动1或活动2的兴趣。
答案 0 :(得分:2)
使用Fragments可能是最好的解决方案,因为像这样,您不必从启动Activity启动另一个Activity。在MainActivity中,只需定义包含Fragment占位符的布局。一开始,如果设置了共享首选项,则显示Fragment1,如果没有,则显示Fragment2。
MainActivity的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
在MainActivity的onCreate
中创建相应的片段并将其添加到您的布局中:
FragmentManager manager = getFragmentManager();
Fragment fragment = manager.findFragmentByTag("someTag");
// only create a new fragment, if it is not created yet
if(fragment==null){
if(preferenceIsSet){
fragment = new Fragment1();
}else{
fragment = new Fragment2();
}
}
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.fragment_container, fragment, "someTag");
transaction.commit();
http://developer.android.com/guide/components/fragments.html
答案 1 :(得分:0)
1)根据共享偏好的值/存在,为activity1或2创建一个Intent
2)运行StartActivity(newIntent)
3)run finish()
在你的清单中使用android:theme =“@ android:style / Theme.NoDisplay”,你不需要布局。