2015-09-07 5 views
3

Я осуществление навигации выдвижного меню .getting java.lang.NullPointerException наAndroid: NullPointerException на getActionBar

getActionBar().setDisplayShowHomeEnabled(true); 
getActionBar().setHomeButtonEnabled(true); 

В моем приложении я попробовал деятельность простиралась Activity, а также AppCompatActivity.

Вот мой onCreate код

protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 

     mTitle = mDrawerTitle = getTitle(); 

     navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); 
     navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons); 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.list_slidermenu); 
     navDrawerItems = new ArrayList<NavDrawerItem>(); 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1))); 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1))); 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1))); 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "22")); 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1))); 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+")); 
     navMenuIcons.recycle(); 
     mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); 
     adapter = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems); 
     mDrawerList.setAdapter(adapter); 
     //abling action bar app icon and behaving it as toggle button 
     getActionBar().setDisplayShowHomeEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 
     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 

       R.drawable.menu_left, //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 (savedInstanceState == null) { 
      // on first time display view for first nav item 
      displayView(0); 
     } 
    } 

Вот LogCat Информацию по

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tazeen.slidingmenu/com.example.tazeen.slidingmenu.MainActivity}: java.lang.NullPointerException 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
      at android.app.ActivityThread.access$600(ActivityThread.java:130) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4745) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
      at com.example.tazeen.slidingmenu.MainActivity.onCreate(MainActivity.java:62) 
      at android.app.Activity.performCreate(Activity.java:5008) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
            at android.app.ActivityThread.access$600(ActivityThread.java:130) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
            at android.os.Handler.dispatchMessage(Handler.java:99) 
            at android.os.Looper.loop(Looper.java:137) 
            at android.app.ActivityThread.main(ActivityThread.java:4745) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:511) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
            at dalvik.system.NativeStart.main(Native Method) 
+0

Постарайтесь отправить свой Выход Logcat также. –

+0

Возможный дубликат [getActionBar() возвращает null] (http://stackoverflow.com/questions/6867076/getactionbar-returns-null) – alfasin

ответ

2

Если вы простирающийся от AppCompatActivity вы должны использовать, getSupportActionBar()

Если вы расширяете образуют Activity вас, могут использовать getActionBar(),

Но в обоих случаях

У вас есть тема с поддержкой ActionBar, назначенная для вашего Activity.

Например: Theme.AppCompat.Light

или программно можете сделать это,

requestWindowFeature(Window.FEATURE_ACTION_BAR); 

перед тем

super.onCreate(savedInstanceState); 

Но лучше иметь стиль объявлены и назначены для вашей деятельности, а не делать он программно.

+0

@androidTag Вы разрешили эту проблему? –

0

extends простой Activity вместо ActionBarActivity .И всегда проверяйте нуль перед тем, как setDisplayShowHomeEnabled():

if(getActionBar()!=null){ 
    getActionBar().setDisplayShowHomeEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 
    } 

и другое решение использовать getSupportActionBar() вместо getActionBar() , а затем

if(getSupportActionBar()!=null){ 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getgetSupportActionBarActionBar().setHomeButtonEnabled(true); 
    } 

наслаждаться код :)

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