Как сохранить экземпляр состояния моей деятельности - PullRequest
0 голосов
/ 24 октября 2010

Я, очевидно, новичок и два дня пытался выяснить, как сохранить состояние моей основной деятельности безрезультатно.Буду признателен за любую помощь.Когда я запускаю действие ShowDetail и возвращаюсь к основному действию, у меня нет данных в списке.У меня есть два XML-файла: main.xml и item.xml.Главное - это просто просмотр списка и просмотр текста.Item.xml - это 3 вида текста для данных в списке.Элемент Вот код из моей основной деятельности:

public class main extends ListActivity {

частные события EventsData;

/** 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);
}

}

1 Ответ

0 голосов
/ 24 октября 2010

Я бы сказал, что вам нужно поместить ваши общие действия в onResume() вместо onCreate().

Возможно, взгляд на жизненный цикл приложения поможет понять, что я имею в виду: http://developer.android.com/reference/android/app/Activity.html

...