【问题标题】:Android: Navigation drawer select item different position 0Android:导航抽屉选择项目不同位置0
【发布时间】:2014-03-14 11:50:45
【问题描述】:

我他创建了一个导航抽屉,但我不知道默认选择选项 3 和应用程序启动时文本设置为加粗抽屉。我尝试mDrawerList.setItemChecked(2, true); 加载抽屉,但始终选择选项 1。这是我的代码:

MainActivity.java

private void cargarDrawerLayout(Bundle b) {

    mTitle = mDrawerTitle = getTitle();

    textosMenuLateral = getResources().getStringArray(R.array.nav_drawer_items);

    iconosMenuLateral1 = getResources()
            .obtainTypedArray(R.array.iconos_menu_lateral1);

    iconosMenuLateral2 = getResources()
            .obtainTypedArray(R.array.iconos_menu_lateral2);

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.list_slidermenu);

    int[] colores = {0, 0xFFFFFFFF, 0};
    mDrawerList.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colores));
    mDrawerList.setDividerHeight(4);

    navDrawerItems1 = new ArrayList<NavDrawerItem>();

    navDrawerItems1.add(new NavDrawerItem(textosMenuLateral[0], iconosMenuLateral1.getResourceId(0, -1)));
    navDrawerItems1.add(new NavDrawerItem(textosMenuLateral[1], iconosMenuLateral1.getResourceId(1, -1)));
    navDrawerItems1.add(new NavDrawerItem(textosMenuLateral[2], iconosMenuLateral1.getResourceId(2, -1)));
    navDrawerItems1.add(new NavDrawerItem(textosMenuLateral[3], iconosMenuLateral1.getResourceId(3, -1)));

    navDrawerItems2 = new ArrayList<NavDrawerItem>();

    navDrawerItems2.add(new NavDrawerItem(textosMenuLateral[0], iconosMenuLateral2.getResourceId(0, -1)));
    navDrawerItems2.add(new NavDrawerItem(textosMenuLateral[1], iconosMenuLateral2.getResourceId(1, -1)));
    navDrawerItems2.add(new NavDrawerItem(textosMenuLateral[2], iconosMenuLateral2.getResourceId(2, -1)));
    navDrawerItems2.add(new NavDrawerItem(textosMenuLateral[3], iconosMenuLateral2.getResourceId(3, -1)));

    iconosMenuLateral1.recycle();

    mDrawerList.setOnItemClickListener(new SlideMenuClickListener());

    adapter = new NavDrawerListAdapter(getApplicationContext(),
            navDrawerItems1,
            perfilObj.getColor());
    mDrawerList.setAdapter(adapter);

    mDrawerToggle = new ActionBarDrawerToggle(
            this, 
            mDrawerLayout,
            R.drawable.boton_drawerlayout, //nav menu toggle icon
            R.string.app_name, // nav drawer open - description for accessibility
            R.string.app_name // nav drawer close - description for accessibility
    ) {
        public void onDrawerClosed(View view) {
            getActionBar().setTitle(mTitle);
            // calling onPrepareOptionsMenu() to show action bar icons
            invalidateOptionsMenu();
        }

        public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(mDrawerTitle);
            // calling onPrepareOptionsMenu() to hide action bar icons
            invalidateOptionsMenu();
        }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);

    if (b == null) {
        opcionesPanelLateral(0);
    }

}

private class SlideMenuClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        TextView textView = (TextView) view.findViewById(R.id.title);
        textView.setTypeface(null, Typeface.BOLD);

        ImageView imgIcon = (ImageView) view.findViewById(R.id.icon);
        imgIcon.setImageResource(navDrawerItems2.get(position).getIcon());    

        opcionesPanelLateral(position);
    }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    switch (item.getItemId()) {
//      case R.id.action_settings:
//          return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {

//      boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
//      menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
    return super.onPrepareOptionsMenu(menu);
}

private void opcionesPanelLateral(int position) {

    Intent i;

    switch (position) {
        case 0:
            break;
        case 1:
            OficinasTurismo oficinas = new OficinasTurismo(this, 
                    R.layout.oficinas_alerta,
                    monumento);
            oficinas.show();
            break;
        case 2:
            i = new Intent(this, BusTuristico.class);
            startActivity(i);
            break;
        case 3:
            ElegirPlanos planos = new ElegirPlanos(this, 
                    R.layout.elegir_plano, 
                    R.string.planosMetroRenfe, 
                    R.id.botonPlanoMetro,
                    R.id.botonPlanoRenfe); 
            planos.show();
            break;

        default:
            break;
    }

//      if (fragment != null) {
//          FragmentManager fragmentManager = getFragmentManager();
//          fragmentManager.beginTransaction()
//                  .replace(R.id.frame_container, fragment).commit();

        // update selected item and title, then close the drawer
        mDrawerList.setItemChecked(position, true);
        mDrawerList.setSelection(position);
        if (position == 0) {
            setTitle(getResources().getString(R.string.app_name));
        } else {
            setTitle(textosMenuLateral[position]);
        }
        mDrawerLayout.closeDrawer(mDrawerList);
//      } else {
//          // error in creating fragment
//          Log.e("MainActivity", "Error in creating fragment");
//      }
}

@Override
public void setTitle(CharSequence title) {
    mTitle = title;
    getActionBar().setTitle(mTitle);
}

@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);
    // Pass any configuration change to the drawer toggls
    mDrawerToggle.onConfigurationChanged(newConfig);
}

谢谢

【问题讨论】:

    标签: android navigation navigation-drawer


    【解决方案1】:

    更新这个方法

    if (b == null) {
        opcionesPanelLateral(0);
    }
    

    if (b == null) {
        opcionesPanelLateral(2);
    }
    

    您可以在此处传递任何选项以进行默认选择

    【讨论】:

    • 我无法更改导航抽屉的位置,我正在检查的是,如果互联网在那里,它必须进行该活动或我正在做的类似活动。所以当互联网不存在时。它正在运行到其他活动。但它也没有改变位置和标题。案例 5: if (haveNetworkConnection(getBaseContext())) { System.out.println("Intenet is working");片段 = 新 GinfyAdvertisementActivity();休息; } else { Toast.makeText(MainScreen.this, "广告页面仅在线", 1000).show();显示视图(6);片段 = 新设置();打破;}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2016-04-07
    • 1970-01-01
    相关资源
    最近更新 更多