No se puede reanudar la actividad

Soy principiante y tratando de permitir que mi ListView para actualizar después de mi base de datos SQLite se actualiza. No estoy recibiendo un error de compilación después de revisar mi método onResume() . Estoy utilizando un SimpleCursorAdapter para SimpleCursorAdapter pero no funciona. El error recibido fue de logcat y está por debajo. Por favor avise … ejemplos ayudan mejor.

Logcat:

  02-19 21:31:49.933: E/AndroidRuntime(714): java.lang.RuntimeException: Unable to resume activity {com.loginplus.home/com.loginplus.home.LoginList}: java.lang.NullPointerException 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread.access$600(ActivityThread.java:123) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.os.Handler.dispatchMessage(Handler.java:99) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.os.Looper.loop(Looper.java:137) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread.main(ActivityThread.java:4424) 02-19 21:31:49.933: E/AndroidRuntime(714): at java.lang.reflect.Method.invokeNative(Native Method) 02-19 21:31:49.933: E/AndroidRuntime(714): at java.lang.reflect.Method.invoke(Method.java:511) 02-19 21:31:49.933: E/AndroidRuntime(714): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 02-19 21:31:49.933: E/AndroidRuntime(714): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 02-19 21:31:49.933: E/AndroidRuntime(714): at dalvik.system.NativeStart.main(Native Method) 02-19 21:31:49.933: E/AndroidRuntime(714): Caused by: java.lang.NullPointerException 02-19 21:31:49.933: E/AndroidRuntime(714): at com.loginplus.home.LoginList.onResume(LoginList.java:101) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.Activity.performResume(Activity.java:4539) 02-19 21:31:49.933: E/AndroidRuntime(714): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434) 

Actividad:

  public class LoginList extends Activity implements OnClickListener, OnItemClickListener { private ListView loginList; private Button webLogin; private ListAdapter loginListAdapter; private ArrayList<LoginDetails> loginArrayList; List<String> arrayList = new ArrayList<String>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); arrayList = populateList(); loginListAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, populateList()); setContentView(R.layout.login_listview); loginList = (ListView) findViewById(R.id.loginlist); loginList.setOnItemClickListener(this); webLogin = (Button) findViewById(R.id.button3); webLogin.setOnClickListener(this); } @Override public void onClick (View v) { Intent webLoginIntent = new Intent (this, LoginPlusActivity.class); startActivity(webLoginIntent); } public List<String> populateList (){ List<String> webNameList = new ArrayList<String>(); dataStore openHelperClass = new dataStore (this); SQLiteDatabase sqliteDatabase = openHelperClass.getReadableDatabase(); Cursor cursor = sqliteDatabase.query(dataStore.TABLE_NAME_INFOTABLE, null, null, null, null, null, dataStore.COLUMN_NAME_SITE, null); startManagingCursor(cursor); while (cursor.moveToNext()){ String sName = cursor.getString(cursor.getColumnIndex(dataStore.COLUMN_NAME_SITE)); String wUrl = cursor.getString(cursor.getColumnIndex(dataStore.COLUMN_NAME_ADDRESS)); String uName = cursor.getString(cursor.getColumnIndex(dataStore.COLUMN_NAME_USERNAME)); String pWord = cursor.getString(cursor.getColumnIndex(dataStore.COLUMN_NAME_PASSWORD)); String lNotes = cursor.getString(cursor.getColumnIndex(dataStore.COLUMN_NAME_NOTES)); LoginDetails lpDetails = new LoginDetails(); lpDetails.setsName(sName); lpDetails.setwUrl(wUrl); lpDetails.setuName(uName); lpDetails.setpWord(pWord); lpDetails.setlNotes(lNotes); loginArrayList.add(lpDetails); webNameList.add(sName); } sqliteDatabase.close(); return webNameList; } @Override protected void onResume() { super.onResume(); loginArrayList.clear(); arrayList.clear(); arrayList = populateList(); dataStore refreshHelper = new dataStore (this); SQLiteDatabase sqliteDatabase = refreshHelper.getWritableDatabase(); Cursor cursor = sqliteDatabase.query(dataStore.TABLE_NAME_INFOTABLE, null, null, null, null, null, dataStore.COLUMN_NAME_SITE, null); String[]columns = new String[] { dataStore.COLUMN_NAME_SITE, dataStore.COLUMN_NAME_ADDRESS, dataStore.COLUMN_NAME_USERNAME, dataStore.COLUMN_NAME_PASSWORD, dataStore.COLUMN_NAME_NOTES }; int[] to = new int[]{R.id.rusName, R.id.ruwUrl, R.id.ruuName, R.id.rupWord, R.id.ruNotes}; SimpleCursorAdapter loginListAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, columns, to); loginListAdapter.notifyDataSetChanged(); } @Override public void onItemClick(AdapterView<?> arg0 , View arg1, int arg2, long arg3) { Toast.makeText(getApplicationContext(), "Selected ID :" + arg2, Toast.LENGTH_SHORT).show(); Intent updateDeleteLoginInfo = new Intent (this, UpdateDeleteLoginList.class); LoginDetails clickedObject = loginArrayList.get(arg2); Bundle loginBundle = new Bundle(); loginBundle.putString("clickedWebSite",clickedObject.getsName()); loginBundle.putString("clickedWebAddress",clickedObject.getwUrl()); loginBundle.putString("clickedUserName",clickedObject.getuName()); loginBundle.putString("clickedPassWord",clickedObject.getpWord()); loginBundle.putString("clickedNotes",clickedObject.getlNotes()); updateDeleteLoginInfo.putExtras(loginBundle); startActivityForResult(updateDeleteLoginInfo, 0); } } 

RennoDiniro EditResultados:

Logcat:

  02-21 23:40:18.419: E/AndroidRuntime(705): FATAL EXCEPTION: main 02-21 23:40:18.419: E/AndroidRuntime(705): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.loginplus.home/com.loginplus.home.LoginList}: java.lang.NullPointerException 02-21 23:40:18.419: E/AndroidRuntime(705): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 02-21 23:40:18.419: E/AndroidRuntime(705): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 02-21 23:40:18.419: E/AndroidRuntime(705): at android.app.ActivityThread.access$600(ActivityThread.java:123) 02-21 23:40:18.419: E/AndroidRuntime(705): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 02-21 23:40:18.419: E/AndroidRuntime(705): at android.os.Handler.dispatchMessage(Handler.java:99) 02-21 23:40:18.419: E/AndroidRuntime(705): at android.os.Looper.loop(Looper.java:137) 02-21 23:40:18.419: E/AndroidRuntime(705): at android.app.ActivityThread.main(ActivityThread.java:4424) 02-21 23:40:18.419: E/AndroidRuntime(705): at java.lang.reflect.Method.invokeNative(Native Method) 02-21 23:40:18.419: E/AndroidRuntime(705): at java.lang.reflect.Method.invoke(Method.java:511) 02-21 23:40:18.419: E/AndroidRuntime(705): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 02-21 23:40:18.419: E/AndroidRuntime(705): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 02-21 23:40:18.419: E/AndroidRuntime(705): at dalvik.system.NativeStart.main(Native Method) 02-21 23:40:18.419: E/AndroidRuntime(705): Caused by: java.lang.NullPointerException 02-21 23:40:18.419: E/AndroidRuntime(705): at com.loginplus.home.LoginList.populateList(LoginList.java:88) 02-21 23:40:18.419: E/AndroidRuntime(705): at com.loginplus.home.LoginList.onCreate(LoginList.java:37) 02-21 23:40:18.419: E/AndroidRuntime(705): at android.app.Activity.performCreate(Activity.java:4465) 02-21 23:40:18.419: E/AndroidRuntime(705): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 02-21 23:40:18.419: E/AndroidRuntime(705): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 

Clase de actividad:

  public class LoginList extends Activity implements OnClickListener, OnItemClickListener { private ListView loginList; private Button webLogin; private ListAdapter loginListAdapter; private ArrayList<LoginDetails> loginArrayList; List<String> arrayList = new ArrayList<String>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); loginListAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, populateList()); arrayList = populateList(); setContentView(R.layout.login_listview); loginList = (ListView) findViewById(R.id.loginlist); loginList.setOnItemClickListener(this); webLogin = (Button) findViewById(R.id.button3); webLogin.setOnClickListener(this); } @Override public void onClick (View v) { Intent webLoginIntent = new Intent (this, LoginPlusActivity.class); startActivity(webLoginIntent); } public List<String> populateList (){ List<String> webNameList = new ArrayList<String>(); dataStore openHelperClass = new dataStore (this); SQLiteDatabase sqliteDatabase = openHelperClass.getReadableDatabase(); Cursor cursor = sqliteDatabase.query(dataStore.TABLE_NAME_INFOTABLE, null, null, null, null, null, dataStore.COLUMN_NAME_SITE, null); startManagingCursor(cursor); while (cursor.moveToNext()){ String sName = cursor.getString(cursor.getColumnIndex(dataStore.COLUMN_NAME_SITE)); String wUrl = cursor.getString(cursor.getColumnIndex(dataStore.COLUMN_NAME_ADDRESS)); String uName = cursor.getString(cursor.getColumnIndex(dataStore.COLUMN_NAME_USERNAME)); String pWord = cursor.getString(cursor.getColumnIndex(dataStore.COLUMN_NAME_PASSWORD)); String lNotes = cursor.getString(cursor.getColumnIndex(dataStore.COLUMN_NAME_NOTES)); LoginDetails lpDetails = new LoginDetails(); lpDetails.setsName(sName); lpDetails.setwUrl(wUrl); lpDetails.setuName(uName); lpDetails.setpWord(pWord); lpDetails.setlNotes(lNotes); loginArrayList.add(lpDetails); webNameList.add(sName); } sqliteDatabase.close(); return webNameList; } @Override protected void onResume() { super.onResume(); try{ loginArrayList = new ArrayList<LoginDetails>(); arrayList = new ArrayList<String>(); loginArrayList.clear(); arrayList.clear(); arrayList = populateList(); dataStore refreshHelper = new dataStore (this); SQLiteDatabase sqliteDatabase = refreshHelper.getWritableDatabase(); Cursor cursor = sqliteDatabase.query(dataStore.TABLE_NAME_INFOTABLE, null, null, null, null, null, dataStore.COLUMN_NAME_SITE, null); String[]columns = new String[] { dataStore.COLUMN_NAME_SITE, dataStore.COLUMN_NAME_ADDRESS, dataStore.COLUMN_NAME_USERNAME, dataStore.COLUMN_NAME_PASSWORD, dataStore.COLUMN_NAME_NOTES }; int[] to = new int[]{R.id.rusName, R.id.ruwUrl, R.id.ruuName, R.id.rupWord, R.id.ruNotes}; SimpleCursorAdapter loginListAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, columns, to); loginListAdapter.notifyDataSetChanged(); }catch(Exception e) { e.printStackTrace(); } } @Override public void onItemClick(AdapterView<?> arg0 , View arg1, int arg2, long arg3) { Toast.makeText(getApplicationContext(), "Selected ID :" + arg2, Toast.LENGTH_SHORT).show(); Intent updateDeleteLoginInfo = new Intent (this, UpdateDeleteLoginList.class); LoginDetails clickedObject = loginArrayList.get(arg2); Bundle loginBundle = new Bundle(); loginBundle.putString("clickedWebSite",clickedObject.getsName()); loginBundle.putString("clickedWebAddress",clickedObject.getwUrl()); loginBundle.putString("clickedUserName",clickedObject.getuName()); loginBundle.putString("clickedPassWord",clickedObject.getpWord()); loginBundle.putString("clickedNotes",clickedObject.getlNotes()); updateDeleteLoginInfo.putExtras(loginBundle); startActivityForResult(updateDeleteLoginInfo, 0); } } 

Cree el adaptador usando el cursor que señala a los datos deseados así como la información de la disposición.

 SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, columns, to); 

En su caso como ur utilizando R.layout.simple_list_item_1

columns serán null o Particular column data which you get from cursor

Será android.R.id.text1


Por ejemplo

  Cursor cursor = getContentResolver().query(People.CONTENT_URI, new String[]{People._ID, People.NAME, People.NUMBER}, null, null, null); startManagingCursor(cursor); // THE DESIRED COLUMNS TO BE BOUND String[] columns = new String[] { People.NAME, People.NUMBER }; // THE XML DEFINED VIEWS WHICH THE DATA WILL BE BOUND TO int[] to = new int[] { R.id.name_entry, R.id.number_entry }; SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this,R.layout.list_example_entry, cursor, columns, to); 

Obviamente no se inicializa ArrayList. Pero .. para su caso considere el uso de un cargador en su lugar. Hay ejemplos completos en ApiDemos (listados en la parte inferior de la página de Loader ).

Nota , Youre nunca instantiating loginArrayList , por lo tanto, cuando intenta acceder a ella dentro de su onResume() , es nulo, por lo tanto, se bloquea. Instantiate que antes de acceder a ella.

ACTUALIZACIÓN 22/02/2013:

Ahh, se le olvidó instanciar el loginArrayList para cuando la aplicación se ejecuta al principio.

En su onCreate() , coloque el siguiente código justo después de la super.OnCreate(...)

 loginArrayList = new ArrayList<LoginDetails>(); 

Así que parece:

 loginArrayList = new ArrayList<LoginDetails>(); loginListAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,populateList()); arrayList = populateList(); setContentView(R.layout.login_listview); //rest of your code... 

Un ajuste rápido para que su aplicación se ejecute es el siguiente, pero tenga en cuenta que para solucionar todo este problema se necesitará un análisis más profundo de qué información se está perdiendo durante toda la pausa y reanudación.

Dentro de su onResume() , haga

 try{ // your code }catch(Exception e) { //Have the printStackTrace to the problems see what's going on without crashing. //e.printStackTrace(); } 

Pero esto no soluciona el problema todavía,

En onResume() . Haz lo siguiente:

  • Cuando obtenga los datos por primera vez, guárdelos en la base de datos.
  • En el onResume () recrear la lista y actualizar con los datos almacenados en la base de datos.

Así que para empezar

 @Override protected void onResume() { super.onResume(); loginArrayList = new ArrayList<LoginDetails>(); arrayList = new ArrayList<String>(); arrayList = populateList(); // any other code you require to be done after the list is populated. } 

Buena suerte.

Parece que el cursor es nulo, una manera rápida de arreglar esto y obtener su aplicación en ejecución es cambiar:

 SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor,null,null); mAdapter.notifyDataSetChanged(); 

a

 if (cursor != null) { SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor,null,null); mAdapter.notifyDataSetChanged(); } 

De lo contrario, parece que su cursor puede ser nulo y podría estar consultando con la proyección equivocada.

Es necesario proporcionar la asignación de nombres de columna a identificadores de recursos en el constructor SimpleCursorAdapter – los parámetros from y to , para los que está pasando null.

El problema es el cursor administrado –

 startManagingCursor(cursor); 

Trate de mantener el cursor usted mismo en lugar de utilizar el cursor de 'actividad gestionada' que está obsoleto.

Dirijo exactamente el mismo problema hace 2 días con las llamadas de onResume después de manejar un cursor.

Nunca inicializas loginArrayList (y por lo tanto es null ).

  • Obtener el elemento seleccionado de ListView enlazado con SimpleCursorAdapter
  • SimpleCursorAdapter y CursorAdapter
  • Cómo solucionar esto sólo se debe llamar cuando el cursor es válido utilizando ExpandableListView
  • Android - Obtención de la lista de contactos con direcciones de calle, pero no con valores bajos como Skype, donde la dirección es sólo una ciudad y un estado
  • Actualizar Android ListView
  • Cuándo cerrar Cursor utilizado en SimpleCursorAdapter
  • Buscar lista de nombres de género con canciones
  • Android ListView: scrollTo no funciona
  • ¿Qué bandera usar en SimpleCursorAdapter?
  • Android Listview - no puede seleccionar varios elementos cuando usa un cursor
  • Android: ¿Cómo poner un archivo de imagen de la tarjeta SD a HashMap con simpleadapter?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.