要实现Android导航抽屉不打开新的活动,可以使用Fragment来替代新的活动。
以下是一个简单的示例:
MainActivity.java:
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawerLayout;
private NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawerLayout = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
// 处理导航菜单项的点击事件
switch (item.getItemId()) {
case R.id.nav_item1:
// 处理菜单项1的点击事件
showFragment(new Fragment1());
break;
case R.id.nav_item2:
// 处理菜单项2的点击事件
showFragment(new Fragment2());
break;
case R.id.nav_item3:
// 处理菜单项3的点击事件
showFragment(new Fragment3());
break;
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
});
}
private void showFragment(Fragment fragment) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
}
}
Fragment1.java:
public class Fragment1 extends Fragment {
public Fragment1() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment1_layout, container, false);
}
}
activity_main.xml:
nav_menu.xml:
fragment1_layout.xml:
以上代码示例展示了如何在MainActivity中使用导航抽屉来切换不同的Fragment,而不是打开新的活动。