导航抽屉默认片段

use*_*415 22 android android-fragments

我是新手开发人员,我在我的应用程序中使用android-support v7集成了Navigation抽屉,我有一个问题.当我启动应用程序时,主要布局是这样的:

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<!-- 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" />
Run Code Online (Sandbox Code Playgroud)

这是我的主要活动:

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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

如何设置默认片段,如应用程序的主要布局?谢谢

sup*_*qua 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();


}
Run Code Online (Sandbox Code Playgroud)

如果你想要一种更复杂的方法(例如当你回到主活动时切换到另一个片段),你可以使用一个Intent额外的片段来确定片段onCreate(),你只需要defaultValue在加载时放入你的默认片段额外的:

int position = getIntent().getIntExtra("position", 1);
switch(position){

    ...

}
Run Code Online (Sandbox Code Playgroud)


Jem*_*rov 18

将它放在Main Activity中onCreate()的末尾.

 if (savedInstanceState == null) {
        selectItem(0);
 }
Run Code Online (Sandbox Code Playgroud)

  • 给我**无法解析方法selectItem(int)**.@ Jemshit Iskenderov (8认同)