2015-04-06 3 views
0

DrawerActivity.javaне может открыть панель навигации

public class DrawerActivity extends MainActivity{ 
     private DrawerLayout mDrawerLayout; 
     private ListView mDrawerList; 
     private ActionBarDrawerToggle mDrawerToggle; 

     private CharSequence mDrawerTitle; 
     private CharSequence mTitle; 
     private String[] navMenuItems; 



     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 
      super.onCreate(savedInstanceState); 

      setContentView(R.layout.nav_drawer_menu); 

      mTitle = mDrawerTitle = getTitle(); 
      navMenuItems = getResources().getStringArray(R.array.nav_drawer_items_array); 
      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
      mDrawerList = (ListView) findViewById(R.id.left_drawer); 

      // set a custom shadow that overlays the main content when the drawer opens 
      mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
      // set up the drawer's list view with items and click listener 
      mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, navMenuItems)); 
      //mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

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

      // ActionBarDrawerToggle ties together the the proper interactions 
      // between the sliding drawer and the action bar app icon 
      mDrawerToggle = new ActionBarDrawerToggle(
        this,     /* host Activity */ 
        mDrawerLayout,   /* DrawerLayout object */ 
        R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */ 
        R.string.drawer_open, /* "open drawer" description for accessibility */ 
        R.string.drawer_close /* "close drawer" description for accessibility */ 
      ) { 
       public void onDrawerClosed(View view) { 
        getSupportActionBar().setTitle(R.string.app_name); 
        invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
       } 

       public void onDrawerOpened(View drawerView) { 
        getSupportActionBar().setTitle("Menu"); 
        invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
       } 
      }; 
      mDrawerLayout.setDrawerListener(mDrawerToggle); 


     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.menu_main, menu); 
      return true; 
     } 

     @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 super.onOptionsItemSelected(item); 
     } 


     /** 
     * When using the ActionBarDrawerToggle, you must call it during 
     * onPostCreate() and onConfigurationChanged()... 
     */ 

     @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); 
     } 
    } 

HomePage.java

public class HomePage extends DrawerActivity { 

     public static boolean active = false; 
     private Connection con; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.layout_home); 

      /* 
      try { 
       con = new ConnectDataBase().getCon(); 
       if (con == null) 
        Toast.makeText(getApplicationContext(), "con is null", Toast.LENGTH_LONG).show(); 
       con.close(); 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
      */ 

     } 

Когда моя основная деятельность в андроида манифеста DrawerActivity, ящик выходит при нажатии на значок приложения. но это не происходит в деятельности HomePage, и нет ошибки. как исправить?!

+0

Для DrawerActivity ваш даются один макет, как (с меню) и в HomeActivity вашего данного другого макета (без меню), то как он будет отображать меню для обоих действий, поэтому на основе макета будет отображаться меню – Hanuman

+0

Могу ли я узнать, почему у вас есть расширение MainActivity в вашей DrawerActivity? или какой код вы сделали в MainActivity? –

+0

@AndroidWeblineindia как раз о панели действий, и теперь я собрал их вместе – Jerryc

ответ

1

Это потому, что вы использовали ActionBarDrawerToggle и mDrawerList как private в суперклассе, следовательно, они не унаследованы вашим подклассом! Сделайте их public, а затем попробуйте.

EDIT

использовать эту линию в подклассе

super.onCreate(savedInstanceState); 
setContentView(R.layout.layout_home); 
super.onCreateDrawer(); // this line 

Смотрите, если это работает

+0

все еще не работает, так это то, что все они должны быть общедоступными? – Jerryc

+0

да все они должны быть общедоступными –

+0

я изменил, все еще не могу исправить – Jerryc

Смежные вопросы