在DrawerLayout上运行ActionBarActivity而不是Fragment

时间:2014-07-25 07:13:40

标签: android android-activity android-fragments fragment

我想为我的新Android应用程序制作DrawerLayout。但我需要在同一活动中使用活动。

我该如何处理它,我的代码如下:

my_activity.java; (有很多菜单列表的代码,刷卡vs,但我只是添加了我的问题行)

    switch (position) {
        case 0:
            fragment = new HomeFragment();
            break;

这是我的问题。我想在这一步运行活动文件,但我不能。我想展示一些活动文件案例:0,我尝试了我所知道的一切但我无法做到。 实际上我对这个片段有点困惑&活动问题

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先,您的活动xml(您想要使用导航抽屉的那个)必须包含<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"> 作为其根元素和列表视图(最后在xml层次结构中)

<ListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="@android:color/background_light"
    android:choiceMode="singleChoice" />

在您的活动中,您应该:

        DrawerLayout drawerLayout;
        ListView drawerList;
        ActionBarDrawerToggle drawerToggle;
        ...
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
                    R.drawable.ic_drawer, R.string.Open, R.string.Close);

            drawerLayout.setDrawerListener(drawerToggle);
 drawerList.setAdapter(new youradaptertype());

        drawerList.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                    long arg3) {

                switch (arg2) {

                    case 0:
                        Intent l = new Intent(MainActivity.this,
                                FriendActivity.class);
                        startActivity(l);
                        break;

                    case 1:
                        Intent j = new Intent(MainActivity.this, RequestActivity.class);
                        startActivity(j);
                        break;

                    case 2:
                        Intent i = new Intent(MainActivity.this,
                                SettingsActivity.class);
                        startActivity(i);
                        break;

                    ...
                }

                drawerLayout.closeDrawer(drawerList);
            }
        });

在每个“case”语句中,要启动活动,您应该使用Intent并开始一个新活动。如果您只是想在“案例”中更改片段(而不是开始新的活动),您应该这样:

getSupportFragmentManager().beginTransaction()
                .replace(YOUR_ROOT_VIEW_ID, new fragmenttobeinstantiated())
                //optinal
                .addToBackStack(null).commit();

看看它是否有帮助!