NullPointerException Causado por getActionBar ()
Al intentar configurar el Cajón de navegación de una aplicación en este momento, y cada vez que intento ejecutar la aplicación en mi dispositivo Android, obtengo una NullPointerException. El error es causado por getActionBar.setDisplayHomeUpAsEnabled(true)
y getActionBar.setHomeButtonEnabled(true)
Incluso si elimino estas dos líneas de código, sigo recibiendo un error.
- ¿Por qué File.listFiles devuelve null cuando se llama a un directorio?
- IabHelper error de Android (NullPointerException) launchPurchaseFlow?
- NullPointerException Advertencia sobre getView () dentro del método onActivityCreated / onStart / onViewCreated
- En Java, si un puntero nulo sucede muy raramente es mejor usar catch en lugar de if
- Android + java.lang.NullPointerException: Intenta invocar el método de interfaz
¿Cómo puedo solucionar esto rápidamente?
Código:
import android.app.Activity; import android.app.Fragment; import android.content.res.Configuration; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.support.v7.app.ActionBarDrawerToggle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends Activity { private String[] navDrawerTitles; private DrawerLayout navDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; private CharSequence mTitle; Fragment fragment = new Fragment(); private Fragment blankFrag = new Fragment(); private final int POSITION = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); navDrawerTitles = getResources().getStringArray(R.array.nav_array); navDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); // Set the adapter for the list view mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, navDrawerTitles)); mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); navDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */ navDrawerLayout, /* DrawerLayout object */ //R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */ R.string.drawer_open, /* "open drawer" description */ R.string.drawer_close /* "close drawer" description */ ) { /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { // super.onDrawerClosed(view); getActionBar().setTitle(R.string.app_name); invalidateOptionsMenu(); } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { // super.onDrawerOpened(drawerView); getActionBar().setTitle(R.string.app_name); invalidateOptionsMenu(); } }; // Set the drawer toggle as the DrawerListener navDrawerLayout.setDrawerListener(mDrawerToggle); if (savedInstanceState == null) { selectItem(0); } } public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_main, 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 = navDrawerLayout.isDrawerOpen(mDrawerList); menu.findItem(R.id.action_settings).setVisible(!drawerOpen); return super.onPrepareOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem item) { // Pass the event to ActionBarDrawerToggle, if it returns // true, then it has handled the app icon touch event if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); } } /** Swaps fragments in the main content view */ /** * Starts an Activity when item is clicked */ private void selectItem(int position) { // } Bundle args = new Bundle(); args.putInt(StartingFragment.TEA_TYPE_POS, position); fragment.setArguments(args); // Highlight the selected item, update the title, and close the drawer mDrawerList.setItemChecked(position, true); // setTitle(navDrawerTitles[position]); navDrawerLayout.closeDrawer(mDrawerList); } @Override public void setTitle(CharSequence title) { mTitle = title; getActionBar().setTitle(mTitle); } /** * 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); mDrawerToggle.onConfigurationChanged(newConfig); } }
01-31 14: 11: 11.298: E / AndroidRuntime (20904): FATAL EXCEPTION: principal 01-31 14: 11: 11.298: E / AndroidRuntime (20904): Proceso: appathon.bu.com.appathon, PID: 20904 01 -31 14: 11: 11.298: E / AndroidRuntime (20904): java.lang.RuntimeException: No se puede iniciar la actividad ComponentInfo {appathon.bu.com.appathon / appathon.bu.com.appathon.MainActivity}: java.lang. NullPointerException 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2212) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en android .app.ActivityThread.handleLaunchActivity (ActivityThread.java:2271) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en android.app.ActivityThread.access $ 800 (ActivityThread.java:144) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1205) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en android.os.Handler .dispatchMessage (Handler.java:102) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en android.os.L Ooper.loop (Looper.java:136) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en android.app.ActivityThread.main (ActivityThread.java:5146) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en java.lang.reflect.Method.invokeNative (Método nativo) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en java.lang.reflect.Method.invoke (Method. Java: 515) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:796) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en com.android.internal.os.ZygoteInit.main (ZygoteInit.java:612) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en dalvik.system.NativeStart.main (Método nativo) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): Causado por: java.lang.NullPointerException 01-31 14: 11: 11.298: E / AndroidRuntime (20904): at appathon.bu.com .appathon.MainActivity.onCreate (MainActivity.java:45) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en android.app.Activity.performCreate (Activity.java:5231) 01-31 14:11 : 11.298: E / AndroidR Untime (20904): en android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): en android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2169 ) 01-31 14: 11: 11.298: E / AndroidRuntime (20904): … 11 más
- Mi ubicación actual siempre devuelve null. ¿Cómo puedo arreglar esto?
- Error de inicio de Android Studio v1.2.0: java.lang.NullPointerException
- NullPointer en toLowerCase pero no uso ese método en ninguna parte
- Android: Pasar datos (extras) a un fragmento
- Android get La barra de acción de soporte siempre devuelve NULL
- TextToSpeech muestra Null Pointer Exception?
- Expectativa de puntero nulo al comprobar si SharedPrefs es igual a Null
- La inspección muestra la excepción de puntero nulo mientras compruebo la probabilidad nula
En primer lugar, si getActionBar()
en una Activity
devuelve null
, entonces no tiene una barra de acción nativa en su actividad.
Segundo, android.support.v7.app.ActionBarDrawerToggle
no funciona con la barra de acción nativa. Funciona con el backport de la barra de acción appcompat-v7
. Si vas a usar android.support.v7.app.ActionBarDrawerToggle
, entonces debes mover tu aplicación para usar appcompat-v7
:
-
Añadir
appcompat-v7
como una dependencia -
Heredar de
ActionBarActivity
lugar deActivity
-
Llame a
getSupportActionBar()
lugar degetActionBar()
-
Utilice
Theme.AppCompat
(o algo que hereda de él) como el tema de su actividad
- Eclipse da "Conversión al formato de Dalvik fallado" mientras que la hormiga trabaja
- La fecha y hora muestran datos erróneos