2010-10-24 51 views
0

我顯然是新的,並且一直試圖在兩天內想出如何將我的主要活動狀態保存到無濟於事狀態。我將不勝感激任何幫助。當我啓動ShowDetail活動並返回到主要活動時,我在列表中沒有數據。我有兩個xml文件,一個main.xml和一個item.xml文件。 main只是一個listview和一個textview。 Item.xml是列表中數據的3個文本視圖。項目這裏是我的主要活動代碼:如何保存我的活動的實例狀態

public class main extends ListActivity { 

private EventsData events;

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

}

回答

0

我說你需要將你的一般行動納入onResume(),而不是在onCreate()

也許看看應用程序生命週期有助於理解我的意思: http://developer.android.com/reference/android/app/Activity.html

+0

我讀過這一遍又一遍,也沒有與我的問題幫助了我。我可以看到保存textview的狀態是多麼容易,但不是一個listview。感謝您的迴應。 – 2010-10-24 17:11:48

+0

我剛剛閱讀你的答案,如果我把我的一般行動onresume它將會因爲沒有保存任何東西。再次感謝您的迴應。 – 2010-10-24 17:13:25

+0

你可以發佈Stacktrace嗎?所以,你想填充你的列表視圖並保留選定的項目,對吧? – stpn108 2010-10-24 17:45:13