[英]Android studio navigation drawer not handling clicks
我正在尝试使用导航抽屉,在单击导航项时用片段替换框架布局。 这是我的抽屉代码...
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
return true;
case R.id.things_manager:
ThingsManager thingsManager = new ThingsManager();
FragmentManager fragmentManager1 = getSupportFragmentManager();
fragmentManager1.beginTransaction().replace(R.id.fragment_container, thingsManager).commit();
return true;
case R.id.settings_tab:
Settings settings = new Settings();
FragmentManager fragmentManager2 = getSupportFragmentManager();
fragmentManager2.beginTransaction().replace(R.id.fragment_container, settings).commit();
return true;
case R.id.sign_out_tab:
Intent i = new Intent(this, Login.class);
startActivity(i);
return true;
}
return super.onOptionsItemSelected(item);
}
当我单击菜单图标时会弹出导航菜单,但没有一个项目单击起作用。 甚至没有我在底部的退出意图。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
android.support.v4.app.Fragment myFragment = null;
Class fragmentClass = null;
switch (item.getItemId()) {
case android.R.id.home:
//Example if your fragment activity name is fragment_home
fragmentClass = fragment_home.class;
break;
case R.id.things_manager:
//Same as Home
break;
case R.id.settings_tab:
//
break;
case R.id.sign_out_tab:
//
break;
}
try{
myFragment = (android.support.v4.app.Fragment) fragmentClass.newInstance();
}catch(Exception e){
e.printStackTrace();
}
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
//Back Button Wont Kill
fragmentManager.beginTransaction().replace(R.id.frameLayout, myFragment).addToBackStack(null).commit();
return super.onOptionsItemSelected(item);
}
看到您已经实现了Drawer
我假设您已经在Activity
声明了NavigationView
。 如果还没有。
在您的Activity
实现OnNavigationItemSelectedListener
。
public class MyActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {....}
将此添加到您的onCreate
Activity
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
在您的Activity
添加此方法以处理对 Drawer 项目的点击。
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
return true;
case R.id.things_manager:
ThingsManager thingsManager = new ThingsManager();
FragmentManager fragmentManager1 = getSupportFragmentManager();
fragmentManager1.beginTransaction().replace(R.id.fragment_container, thingsManager).commit();
return true;
case R.id.settings_tab:
Settings settings = new Settings();
FragmentManager fragmentManager2 = getSupportFragmentManager();
fragmentManager2.beginTransaction().replace(R.id.fragment_container, settings).commit();
return true;
case R.id.sign_out_tab:
Intent i = new Intent(this, Login.class);
startActivity(i);
return true;
}
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.