应用启动时的布局选择

时间:2014-06-25 14:35:38

标签: android

我正在尝试创建一个应用。该应用程序会在启动时检查共享首选项值。

1)如果设置了共享首选项,它应该启动activity1 2)如果未设置共享首选项,则应启动activity2

那么我用什么布局来显示主屏幕的活动?主要活动用于启动activity1或activity2。有没有办法从主活动中启动activity1或activity2而不使用主活动的任何布局?

我不打算向用户显示主要活动。显示活动1或活动2的兴趣。

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)

阅读starting an activity

基本上,你的主要任务应该是:

1)根据共享偏好的值/存在,为activity1或2创建一个Intent

2)运行StartActivity(newIntent)

3)run finish()

在你的清单中使用android:theme =“@ android:style / Theme.NoDisplay”,你不需要布局。