应用程序启动时,导航抽屉不显示主要布局

时间:2015-04-26 08:31:26

标签: android navigation-drawer

我的导航抽屉工作正常,但每次运行程序时,默认情况下都会打开抽屉而不是主要布局。只有在点击抽屉按钮时才能打开导航抽屉。

public class MainActivity extends Activity {

    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;

    private CharSequence mDrawerTitle;
    private CharSequence mTitle;
    CustomDrawerAdapter adapter;

    List<DrawerItem> dataList;

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);

          // Initializing
          dataList = new ArrayList<DrawerItem>();
          mTitle = mDrawerTitle = getTitle();
          mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
          mDrawerList = (ListView) findViewById(R.id.left_drawer);

          mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
                      GravityCompat.START);


       // Add Drawer Item to dataList
          // Add Drawer Item to dataList
          dataList.add(new DrawerItem("Message", R.drawable.ic_action_email));
          dataList.add(new DrawerItem("Likes", R.drawable.ic_action_good));
          dataList.add(new DrawerItem("Games", R.drawable.ic_action_gamepad));
          dataList.add(new DrawerItem("Lables", R.drawable.ic_action_labels));
          dataList.add(new DrawerItem("Search", R.drawable.ic_action_search));
          dataList.add(new DrawerItem("Cloud", R.drawable.ic_action_cloud));
          dataList.add(new DrawerItem("Camara", R.drawable.ic_action_camera));
          dataList.add(new DrawerItem("Video", R.drawable.ic_action_video));
          dataList.add(new DrawerItem("Groups", R.drawable.ic_action_group));
          dataList.add(new DrawerItem("Import & Export",
                      R.drawable.ic_action_import_export));
          dataList.add(new DrawerItem("About", R.drawable.ic_action_about));
          dataList.add(new DrawerItem("Settings", R.drawable.ic_action_settings));
          dataList.add(new DrawerItem("Help", R.drawable.ic_action_help));


          adapter = new CustomDrawerAdapter(this, R.layout.custom_drawer_item,dataList);

          mDrawerList.setAdapter(adapter);

          mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

          getActionBar().setDisplayHomeAsUpEnabled(true);
          getActionBar().setHomeButtonEnabled(true);

          mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                      R.drawable.ic_drawer, R.string.drawer_open,
                      R.string.drawer_close) {
                public void onDrawerClosed(View view) {
                      getActionBar().setTitle(mTitle);
                      invalidateOptionsMenu(); // creates call to
                                                                // onPrepareOptionsMenu()
                }

                public void onDrawerOpened(View drawerView) {
                      getActionBar().setTitle(mDrawerTitle);
                      invalidateOptionsMenu(); // creates call to
                                                                // onPrepareOptionsMenu()
                }
          };

          mDrawerLayout.setDrawerListener(mDrawerToggle);

          if (savedInstanceState == null) {
                SelectItem(0);
          }
    }          

          public void SelectItem(int possition) {

              Fragment fragment = null;
              Bundle args = new Bundle();
              switch (possition) {
              case 0:
                    fragment = new FragmentOne();
                    args.putString(FragmentOne.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentOne.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 1:
                    fragment = new FragmentTwo();
                    args.putString(FragmentTwo.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentTwo.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 2:
                    fragment = new FragmentThree();
                    args.putString(FragmentThree.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentThree.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 3:
                    fragment = new FragmentOne();
                    args.putString(FragmentOne.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentOne.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 4:
                    fragment = new FragmentTwo();
                    args.putString(FragmentTwo.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentTwo.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 5:
                    fragment = new FragmentThree();
                    args.putString(FragmentThree.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentThree.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 6:
                    fragment = new FragmentOne();
                    args.putString(FragmentOne.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentOne.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 7:
                    fragment = new FragmentTwo();
                    args.putString(FragmentTwo.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentTwo.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 8:
                    fragment = new FragmentThree();
                    args.putString(FragmentThree.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentThree.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 9:
                    fragment = new FragmentOne();
                    args.putString(FragmentOne.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentOne.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 10:
                    fragment = new FragmentTwo();
                    args.putString(FragmentTwo.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentTwo.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 11:
                    fragment = new FragmentThree();
                    args.putString(FragmentThree.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentThree.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              case 12:
                    fragment = new FragmentOne();
                    args.putString(FragmentOne.ITEM_NAME, dataList.get(possition)
                                .getItemName());
                    args.putInt(FragmentOne.IMAGE_RESOURCE_ID, dataList.get(possition)
                                .getImgResID());
                    break;
              default:
                    break;
              }

              fragment.setArguments(args);
              FragmentManager frgManager = getFragmentManager();
              frgManager.beginTransaction().replace(R.id.content_frame, fragment)
                          .commit();

              mDrawerList.setItemChecked(possition, true);
              setTitle(dataList.get(possition).getItemName());
              mDrawerLayout.closeDrawer(mDrawerList);

        }

          @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 boolean onOptionsItemSelected(MenuItem item) {
                // The action bar home/up action should open or close the drawer.
                // ActionBarDrawerToggle will take care of this.
                if (mDrawerToggle.onOptionsItemSelected(item)) {
                      return true;
                }

                return false;
          }

          @Override
          public void onConfigurationChanged(Configuration newConfig) {
                super.onConfigurationChanged(newConfig);
                // Pass any configuration change to the drawer toggles
                mDrawerToggle.onConfigurationChanged(newConfig);
          }


          @SuppressWarnings("unused")
        private class DrawerItemClickListener implements
          ListView.OnItemClickListener {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
             SelectItem(position);
                                                                                           }
                                        }

    }

1 个答案:

答案 0 :(得分:0)

几天前发布的帖子似乎使用了相同的导航抽屉模板。在那里,通过删除这些代码行来解决问题:

if (savedInstanceState == null) {
            SelectItem(0);
      }

正在自动选择列表中的第一项。尝试删除此部分,看看会发生什么。 This is the post I am referring to as well.