由于导航抽屉

时间:2016-05-18 16:57:59

标签: android android-layout navigation-drawer

我已经将newActivity扩展到mainActivity并且导航抽屉正常工作,但现在它形成一个循环,因为它再次在导航抽屉中点击newActivity并再次打开一个新意图,所以基本上我我打算在意图内部意图内部意图,我想在抽屉中的项目之间移动而不是为每次点击打开一个新的意图,我做错了什么?

我的导航抽屉(下方)听取点击事件并打开一个名为主要活动的活动

 public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();
    if (id == R.id.nav_camera) {
       startActivity(new Intent(Main2Activity.this, MainActivity.class));
    } else if (id == R.id.nav_gallery) {

    } else if (id == R.id.nav_slideshow) {

    } else if (id == R.id.nav_manage) {

    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

现在因为这个抽屉也会带有主要活动,因为我已经从带有抽屉的活动中扩展了它,我可以选择再次点击新意图中的mainactivity选项,所以这种方式让我有能力打开任何一个次数,我不想要这个

1 个答案:

答案 0 :(得分:0)

你应该使用片段。活动分别保存您的主视图和活动抽屉。当您单击抽屉中的某个项目时,只需替换主容器上的片段。

请检查:https://developer.android.com/training/implementing-navigation/nav-drawer.html#ListItemClicks

修改

public void replaceFragment(Fragment fragment) {
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(R.id.mainContainer, fragment);
    ft.commit();
}

将此方法放入您的活动中。并在主布局中创建一个FrameLayout。

<android.support.v4.widget.DrawerLayout...

<FrameLayout
    android:id="@+id/mainContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

现在,您可以使用replaceFragment(Blala.newInstance())在onCreate()中为第一个屏幕设置片段。当你点击抽屉上的项目时,只需再次调用replaceFragment(...)。