我已经将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选项,所以这种方式让我有能力打开任何一个次数,我不想要这个
答案 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(...)。