2010-10-24 2 views
0

Je évidemment nouveau et j'ai essayé de deux jours pour comprendre comment sauver l'état de mon activité principale en vain. J'apprécierais toute aide. Lorsque je lance l'activité ShowDetail et que je retourne à l'activité principale, je n'ai aucune donnée dans la liste. J'ai deux fichiers xml un fichier main.xml et un fichier item.xml. main est juste un listview et un textview. Item.xml correspond à 3 textviews pour les données de la liste. Item Voici le code de mon activité principale:Comment enregistrer l'instancestate de mon activité

public class main extends ListActivity { 

Événements privés Événements de données;

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState);   
    setContentView(R.layout.main); 
    events = new EventsData(this); 
    try { 
    Cursor cursor = getEvents(); 
    showEvents(cursor); 
    } finally { 
    events.close(); 
    } 
} 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState){ 
super.onSaveInstanceState(savedInstanceState); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState){ 
super.onRestoreInstanceState(savedInstanceState); 
} 

@Override 
public void onPause(){ 
super.onPause(); 
} 

@Override 
public void onRestart(){ 

super.onRestart(); 

} 


private static String[] FROM = { CODE, EXCERPT, _ID, }; 
private static String ORDER_BY = CODE + " ASC"; 
private Cursor getEvents() { 
SQLiteDatabase db = events.getReadableDatabase(); 
Cursor cursor = db.query(TABLE_NAME, FROM, null, null, null, null, ORDER_BY); 
startManagingCursor(cursor); 
return cursor; 
} 

private static int[] TO = { R.id.code, R.id.excerpt, }; 
private void showEvents(Cursor cursor) { 
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
    R.layout.item, cursor, FROM, TO); 
setListAdapter(adapter); 
} 

private static String[] MIKEY = { _ID, CODE, DEFINITION }; 
protected void onListItemClick(ListView l, View v, int position, long id) { 
Cursor cursor = ((CursorAdapter)getListAdapter()).getCursor(); 
cursor.getLong(2); 

SQLiteDatabase db = events.getReadableDatabase(); 
Cursor c = db.query(TABLE_NAME, MIKEY, "_id = "+cursor.getLong(2)+"", null, null, null, null); 
c.moveToFirst(); 

Intent in1 = new Intent(); 
Bundle bun = new Bundle(); 
bun.putLong("id", c.getLong(0)); 
bun.putString("code", c.getString(1)); 
bun.putString("definition", c.getString(2)); 
in1.setClass(this, ShowDetail.class); 
in1.putExtras(bun); 

startActivity(in1); 
} 

}

Répondre

0

Je dirais que vous devez placer vos actions générales en onResume() au lieu de onCreate().

Peut-être un regard sur le cycle de vie de l'application permet de comprendre ce que je veux dire: http://developer.android.com/reference/android/app/Activity.html

+0

Je l'ai lu à plusieurs reprises et il ne m'a pas aidé à mon problème. Je peux voir comme il est facile de sauvegarder l'état des textviews, etc. mais pas une liste. Merci pour la réponse. –

+0

Je viens de lire à nouveau votre réponse et si je mets mes actions générales en veille, ça ira parce que rien n'a été sauvegardé. Merci encore pour la réponse. –

+0

Pourriez-vous poster le Stacktrace? Donc, vous voulez remplir votre liste et conserver l'élément sélectionné, n'est-ce pas? – stpn108

Questions connexes