Java 如何在导航抽屉中使用McClickListener?

Java 如何在导航抽屉中使用McClickListener?,java,android,navigation-drawer,Java,Android,Navigation Drawer,我的应用程序中有一个导航抽屉。抽屉中有项目,但我不知道如何从每个项目中打开新活动 我尝试了一些方法并对其进行了评论 谢谢你的帮助 main活动 public class MainActivity extends ActionBarActivity { private ListView mDrawerList; protected DrawerLayout mDrawer; private CustomActionBarDrawerToggle mDrawerToggle;

我的应用程序中有一个
导航抽屉
。抽屉中有项目,但我不知道如何从每个项目中打开新活动

我尝试了一些方法并对其进行了评论

谢谢你的帮助

main活动

public class MainActivity extends ActionBarActivity
{
    private ListView mDrawerList;
    protected DrawerLayout mDrawer;
    private CustomActionBarDrawerToggle mDrawerToggle;
    private String[] menuItems;
    String LOG_TAG = "Remote It";

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(WindowCompat.FEATURE_ACTION_BAR);
        // getSupportActionBar().hide();
        setContentView(R.layout.activity_main_drawer);

        // enable ActionBar app icon to behave as action to toggle nav drawer
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);

        // set a custom shadow that overlays the main content when the drawer
        // opens
        mDrawer.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

        _initMenu();
        mDrawerToggle = new CustomActionBarDrawerToggle(this, mDrawer);
        mDrawer.setDrawerListener(mDrawerToggle);
        // if (savedInstanceState == null)
        // {
        // selectItem(0);
        // }

    }

    private void _initMenu()
    {
        NsMenuAdapter mAdapter = new NsMenuAdapter(this);

        // Add Header
        mAdapter.addHeader(R.string.ns_menu_main_header);

        // Add first block

        menuItems = getResources().getStringArray(R.array.ns_menu_items);
        String[] menuItemsIcon = getResources().getStringArray(R.array.ns_menu_items_icon);

        int res = 0;
        for (String item : menuItems)
        {

            int id_title = getResources().getIdentifier(item, "string", this.getPackageName());
            int id_icon = getResources().getIdentifier(menuItemsIcon[res], "drawable", this.getPackageName());

            NsMenuItemModel mItem = new NsMenuItemModel(id_title, id_icon);
            // if (res==1) mItem.counter=12; //it is just an example...
            // if (res==3) mItem.counter=3; //it is just an example...
            mAdapter.addItem(mItem);
            res++;
        }

        mAdapter.addHeader(R.string.ns_menu_main_header2);

        mDrawerList = (ListView) findViewById(R.id.drawer);
        if (mDrawerList != null)
            mDrawerList.setAdapter(mAdapter);

        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState)
    {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig)
    {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.control_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    /* Called whenever we call invalidateOptionsMenu() */
    @Override
    public boolean onPrepareOptionsMenu(Menu menu)
    {
        // If the nav drawer is open, hide action items related to the content
        // view
        boolean drawerOpen = mDrawer.isDrawerOpen(mDrawerList);
        menu.findItem(R.id.action_keyboard).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        /*
         * The action bar home/up should open or close the drawer.
         * ActionBarDrawerToggle will take care of this.
         */
        if (mDrawerToggle.onOptionsItemSelected(item))
        {
            return true;
        }

        // Handle your other action bar items...
        return super.onOptionsItemSelected(item);
    }

    private class CustomActionBarDrawerToggle extends ActionBarDrawerToggle
    {

        public CustomActionBarDrawerToggle(Activity mActivity, DrawerLayout mDrawerLayout)
        {
            super(mActivity, mDrawerLayout, R.drawable.ic_drawer, R.string.ns_menu_open, R.string.ns_menu_close);
        }

        @Override
        public void onDrawerClosed(View view)
        {
            getSupportActionBar().setTitle(getString(R.string.ns_menu_close));
            supportInvalidateOptionsMenu(); // creates call to
                                            // onPrepareOptionsMenu()
        }

        @Override
        public void onDrawerOpened(View drawerView)
        {
            getSupportActionBar().setTitle(getString(R.string.ns_menu_open));
            supportInvalidateOptionsMenu(); // creates call to
                                            // onPrepareOptionsMenu()
        }
    }

    //private void selectItem(int position)
    //{
    //  switch (position)
    //  {
    //      case 1:
    //          Intent a = new Intent(MainActivity.this, ControlActivity.class);
    //          startActivity(a);
    //          break;
    //      case 2:
    //          Intent b = new Intent(MainActivity.this, Tutorial.class);
    //          startActivity(b);
    //          break;
    //      default:
    //  }
    //}

    private class DrawerItemClickListener implements ListView.OnItemClickListener
    {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
            // Highlight the selected item, update the title, and close the
            // drawer
            // update selected item and title, then close the drawer
            //mDrawerList.setItemChecked(position, true);
            // String text = "menu click... should be implemented";
            // Toast.makeText(MainActivity.this, text,
            // Toast.LENGTH_LONG).show();
            // // You should reset item counter
            //mDrawer.closeDrawer(mDrawerList);
            Intent intent = new Intent(MainActivity.this, Tutorial.class);
            startActivity(intent);

        }
    }

}
公共类MainActivity扩展了ActionBarActivity
{
私有列表视图mDrawerList;
受保护抽屉布置图;
私有CustomActionBarDrawerToggle mDrawerToggle;
私有字符串[]菜单项;
字符串LOG_TAG=“远程It”;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
supportRequestWindowFeature(WindowCompat.FEATURE\u ACTION\u BAR);
//getSupportActionBar().hide();
setContentView(R.layout.activity\u main\u drawer);
//启用ActionBar应用程序图标作为切换导航抽屉的操作
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mDrawer=(抽屉布局)findViewById(R.id.抽屉布局);
//当抽屉打开时,设置覆盖主要内容的自定义阴影
//打开
mDrawer.setDrawerShadow(R.drawable.drawer\u shadow,GravityCompat.START);
_initMenu();
mDrawerToggle=新的CustomActionBarDrawerToggle(这个,mDrawer);
mDrawer.setDrawerListener(mDrawerToggle);
//如果(savedInstanceState==null)
// {
//选择项目(0);
// }
}
私有void _initMenu()
{
NsMenuAdapter mAdapter=新的NsMenuAdapter(此);
//添加标题
mAdapter.addHeader(R.string.ns\u菜单\u主\u标题);
//添加第一个块
menuItems=getResources().getStringArray(R.array.ns\u菜单项);
String[]menuItemsIcon=getResources().getStringArray(R.array.ns\u菜单项\u图标);
int res=0;
用于(字符串项:菜单项)
{
int id_title=getResources().getIdentifier(项,“字符串”,this.getPackageName());
int id_icon=getResources().getIdentifier(menuItemsIcon[res],“drawable”,this.getPackageName());
NSMENUITEMODEL mItem=新的NSMENUITEMODEL(id\u标题,id\u图标);
//如果(res==1)mItem.counter=12;//这只是一个例子。。。
//如果(res==3)mItem.counter=3;//这只是一个例子。。。
补充材料(mItem);
res++;
}
mAdapter.addHeader(R.string.ns\u menu\u main\u header2);
mDrawerList=(ListView)findViewById(R.id.drawer);
if(mDrawerList!=null)
mDrawerList.setAdapter(mAdapter);
setOnItemClickListener(新的DrawerItemClickListener());
}
@凌驾
后期创建时受保护的空(捆绑包savedInstanceState)
{
super.onPostCreate(savedInstanceState);
//在onRestoreInstanceState发生后同步切换状态。
mDrawerToggle.syncState();
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig)
{
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@凌驾
公共布尔onCreateOptions菜单(菜单)
{
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。控制菜单,菜单);
返回super.onCreateOptions菜单(菜单);
}
/*调用InvalidateOptions菜单()时调用*/
@凌驾
公共布尔值OnPrepareOptions菜单(菜单)
{
//如果导航抽屉打开,则隐藏与内容相关的操作项
//看法
布尔DrawerRopen=mDrawer.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action\u键盘).setVisible(!drawerropen);
返回super.onPrepareOptions菜单(菜单);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项)
{
/*
*home/up操作栏应打开或关闭抽屉。
*ActionBarDrawerToggle会处理好的。
*/
如果(MDRAWERTOGLE.onOptionsItemSelected(项目))
{
返回true;
}
//处理其他操作栏项。。。
返回super.onOptionsItemSelected(项目);
}
私有类CustomActionBarDrawerToggle扩展了ActionBarDrawerToggle
{
公共CustomActionBarDrawerToggle(活动权限、抽屉布局MDDrawerLayout)
{
超级(mActivity、mDrawerLayout、R.drawable.ic\u抽屉、R.string.ns\u菜单打开、R.string.ns\u菜单关闭);
}
@凌驾
公共无效onDrawerClosed(视图)
{
getSupportActionBar().setTitle(getString(R.string.ns_菜单_关闭));
SupportInvalidateOptions菜单();//创建对的调用
//onPrepareOptions菜单()
}
@凌驾
打开图纸上的公共空白(视图抽屉视图)
{
getSupportActionBar().setTitle(getString(R.string.ns_菜单_打开));
SupportInvalidateOptions菜单();//创建对的调用
//onPrepareOptions菜单()
}
}
//私有void selectItem(内部位置)
//{
//开关(位置)
//  {
//案例1:
//意图a=新意图(MainActivity.this、ControlActivity.class);
//星触觉(a);
//中断;
//案例2:
//意图b=新意图(MainActivity.this,Tutorial.class);
//星触觉(b);
//中断;
//默认值:
//  }
//}
私有类DrawerItemClickListener实现ListView.OnItemClickListener
{
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id)
{
//高亮显示所选项目,更新标题,然后关闭
//抽屉
//更新所选项目和标题,然后关闭抽屉
//mDrawerL