[英]Navigation drawer default fragment
我是新手開發人員,我正在將 Navigation drawer 與 android-support v7 集成到我的應用程序中,我有一個問題。 當我啟動應用程序時,主要布局是這樣的:
<?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);
}
});
如何設置默認片段,如應用程序的主布局? 謝謝
如果您可以在每次創建活動時加載默認片段,您可以在onCreate()
放置一個FragmentTransaction
看起來像這樣:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.replace(R.id.content_frame, new Fragment1());
tx.commit();
}
如果您想要一種更復雜的方式來執行此操作(例如,當您返回主活動時切換到不同的片段),您可以使用帶有額外內容的Intent
來確定onCreate()
的片段,您只需將默認片段放在那里在加載額外的defaultValue
:
int position = getIntent().getIntExtra("position", 1);
switch(position){
...
}
把它放在主活動中 onCreate() 的末尾。
if (savedInstanceState == null) {
selectItem(0);
}
如果這就是您的意思,您不能在 XML 中執行此操作。 您在活動的 onCreate 中執行此操作。 例如:
if (getFragmentManager().findFragmentById(R.id.content_frame) == null) {
selectItem(0);
}
其中 selectItem 是您用來在抽屜中選擇片段的方法,如谷歌的示例https://developer.android.com/training/implementing-navigation/nav-drawer.html ,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();
它的幫助,它正在工作
@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();
}
如果您使用的是 Android Studio 底部導航模板:
希望這可以幫助像我這樣經驗不足的人使用模板。
在您的開關代碼中添加默認情況。
@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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.