我是新手开发人员,我在我的应用程序中使用android-support v7集成了Navigation抽屉,我有一个问题。当我启动应用程序时,主要布局是:
<?xml version="1.0" encoding="utf-8"?>
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/white"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
这是我的主要活动:
drawerList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new Fragment1();
break;
case 1:
fragment = new Fragment2();
break;
case 2:
fragment = new Fragment3();
break;
case 3:
fragment = new Fragment4();
break;
}
FragmentManager fragmentManager =
getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();
drawerList.setItemChecked(position, true);
tituloSeccion = opcionesMenu[position];
getSupportActionBar().setTitle(tituloSeccion);
drawerLayout.closeDrawer(drawerList);
}
});
如何设置默认片段,例如应用的主要布局?谢谢
答案 0 :(得分:53)
如果您可以在每次创建活动时加载默认片段,则可以FragmentTransaction
放入onCreate()
看起来像这样:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.replace(R.id.content_frame, new Fragment1());
tx.commit();
}
如果您想要更复杂的方法(例如,当您返回主活动时切换到不同的片段),您可以使用Intent
来确定{{1}中的片段的额外内容},您只需在加载额外内容时将默认片段放在onCreate()
中:
defaultValue
答案 1 :(得分:18)
将它放在主要活动中onCreate()的末尾。
if (savedInstanceState == null) {
selectItem(0);
}
答案 2 :(得分:1)
如果这就是你的意思,你不能在XML中做到这一点。您可以在活动的onCreate中执行此操作。例如:
if (getFragmentManager().findFragmentById(R.id.content_frame) == null) {
selectItem(0);
}
其中selectItem是用于在抽屉中选择片段的方法,如google的示例https://developer.android.com/training/implementing-navigation/nav-drawer.html,0是默认片段的位置。
答案 3 :(得分:0)
在oncreate中尝试:
Fragment fragment = null;
fragment = new HomeFragment();
//HomeFragment= fragment class to launch that
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.screen_area, fragment);
fragmentTransaction.commit();
答案 4 :(得分:0)
它的帮助,它正在运作
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_page);
FragmentManager fragmentManager= getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame
,new YourClass())
.commit();
}
答案 5 :(得分:0)
如果您使用的是 Android Studio 底部导航模板:
希望这能帮助像我这样经验不足的人使用模板。
答案 6 :(得分:-6)
在切换代码中添加默认大小写。
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new Fragment1();
break;
case 1:
fragment = new Fragment2();
break;
case 2:
fragment = new Fragment3();
break;
case 3:
fragment = new Fragment4();
break;
default:
fragment = new Fragment1();
break;
}