Android.app.Application no se puede instanciar debido a NullPointerException

Soy una especie de novato en el mundo android, y haciendo un proyecto de mascota para el ejercicio. Es una aplicación de recordatorio muy simple con sólo dos actividades. Uno es un ListView personalizado que muestra las alarmas existentes. Hay algunos botones en él para iniciar el otro, que es para agregar / editar alarmas. Hay un botón que lleva a la actividad ListView anterior.

Hay una situación extraña que encontré recientemente. Mi aplicación funciona bien. Pero el problema es que, cada vez que activar la actividad de añadir / editar, vuelve a ListView y vuelvo a ejecutar (o debería volver a instalar?) La aplicación. Aparecerá un mensaje de error. Pero sólo se mostrará brevemente y la aplicación se iniciará.

El mensaje de error que capté en el registro dice:

FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.NullPointerException at android.app.LoadedApk.makeApplication(LoadedApk.java:482) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3909) at android.app.ActivityThread.access$1300(ActivityThread.java:122) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4340) 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:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:362) at android.app.LoadedApk.getClassLoader(LoadedApk.java:305) at android.app.LoadedApk.makeApplication(LoadedApk.java:474) ... 11 more 

No indica explícitamente dónde está mal en mis códigos. Así que no tengo ni idea de cómo corregirlo. ¿Alguien encontró problema similar? ¡Cualquier sugerencia será apreciada!

Aquí hay códigos de añadir / editar actividad:

 public class EditEntry extends Activity { private AutoCompleteTextView foodNameTextView; private DatePicker datePicker; // store values in AutoCompleteTextView & DatePicker private String foodName; private Calendar foodDate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit); // dummy selections for AutoCompleteTextView String[] foodList = new String[]{"meat", "fruit", "vega"}; // instantiate AutoCompleteTextView & DatePicker ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.food_list_dropdown, foodList); foodNameTextView = (AutoCompleteTextView)findViewById(R.id.foodName); foodNameTextView.setAdapter(arrayAdapter); datePicker = (DatePicker)findViewById(R.id.date_picker); // get intent from ReminderList. Intent intent = getIntent(); // get extras from intent. Return null if intent is sent from "add" action. foodName = intent.getStringExtra("foodName"); foodDate = (Calendar) intent.getSerializableExtra("foodDate"); // set default values for widgets if it is an "edit" action. if (null != foodName) { foodNameTextView.setText(foodName); datePicker.init(foodDate.get(Calendar.YEAR), foodDate.get(Calendar.MONTH), foodDate.get(Calendar.DAY_OF_MONTH), new OnDateChangedListener() { // will implement date input check later. @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {} }); } // Submit will add/modify the data in xml file. Back will start ReminderList activity Button submit = (Button)findViewById(R.id.entry_submit); Button back = (Button)findViewById(R.id.entry_back); submit.setOnClickListener(new SubmitButtonListener()); back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(EditEntry.this, FoodReminderList.class); startActivity(intent); } }); } // add or modify data in xml file @SuppressWarnings("unused") class SubmitButtonListener implements OnClickListener { Calendar foodDate = Calendar.getInstance(); @Override public void onClick(View v) { XmlUtil xmlUtil = new XmlUtil(); // determine if it is an "edit" action. if (null != foodName) { FoodInfo foodInfo = new FoodInfo(foodName, foodDate); // delete the old data entry xmlUtil.deleteEntry(foodInfo); // cancel old alarm FoodReceiver alarm = new FoodReceiver(EditEntry.this, foodDate, false); } // get new input values foodName = foodNameTextView.getText().toString(); foodDate.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), 0, 0, 0); // update xml file FoodInfo foodInfo = new FoodInfo(foodName, foodDate); xmlUtil.updateEntry(foodInfo); // set new alarm FoodReceiver alarm = new FoodReceiver(EditEntry.this, foodDate, true); // popup toast confirming the submit Toast.makeText(EditEntry.this, "Reminder Added", Toast.LENGTH_SHORT).show(); // clear widgets foodNameTextView.setText(""); Calendar currentDate = Calendar.getInstance(); datePicker.updateDate(currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DAY_OF_MONTH)); } } } 

El Manifiesto es así:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ca.maxiao.Food" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".FoodReminderList" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:label="@string/app_name" android:name=".EditEntry" > </activity> <activity android:label='@string/app_name' android:name=".FoodReminder"></activity> <receiver android:name="ca.maxiao.Food.FoodReceiver"> <intent-filter> <action android:name="Alarm_Setting" /> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.VIBRATE"/> </manifest> 

Tuve exactamente el mismo error, aunque con otro código y más simple que el suyo. Descubrí que el problema se produjo sólo si no cerré la aplicación en el emulador después de volver a ejecutarlo desde eclipse. Así que si lo cierro antes de ejecutarlo desde eclipse, todo funciona bien. Pero ya que soy realmente nuevo para Android, no tengo ni idea de por qué esto es así. Yo aplicaciones de prueba anteriores esto nunca fue un problema.

Hice algunas pruebas más y lockon el problema en la clase interna anónima para el botón Atrás, ya que el error aparecerá cada vez que haga clic en esto antes de reiniciar la aplicación. Si cambio de actividad usando el botón "volver atrás" en el teléfono, todo está bien.

He añadido una línea en la clase interna

 EditEntry.this.finish(); 

Resuelve el problema. Intenté probarlo de forma más sistemática esta vez. Digamos que el código sin la línea anterior es A, y el código con esta línea es B. El escenario va como sigue

1.run A entonces A -> Error

2.run A entonces B -> Error

3.run B entonces A -> OK

4.run B entonces B -> OK

Por lo tanto, supongo que es algún tipo de problema sobre la pila de la actividad?

En realidad, la solución real a este problema es un problema de permisos de carpeta. Asegúrese de que está operando en una carpeta que puede modificar. Acabo de arreglar el mismo problema para mi auto, asegurándose de que estaba en una carpeta con los permisos adecuados.

  • ActionBarActivity getSupportActionBar (). Hide () lanza NullPointerException
  • NullPointerException Advertencia sobre getView () dentro del método onActivityCreated / onStart / onViewCreated
  • La aplicación se bloquea al intentar establecer una conexión VPN?
  • NullPointerException en onSaveInstanceState con AndroidFragments
  • NullPointerExeption con AppCompat BottomSheets
  • Android TabHost.addTab -> Excepción de puntero nulo
  • NullPointerException al intentar pasar matriz de cadena de una clase a otra
  • Excepción de puntero nulo creando un nuevo proyecto Android Studio (virtualToIoFile)
  • Android: error al abrir el archivo de rastreo: ningún archivo o directorio de este tipo
  • Android java.lang.IllegalArgumentException
  • No se puede cambiar dinámicamente un diseño de DialogFragment personalizado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.