2010-11-19 218 views
0

我有一個Android活動,onCreate(),將查詢數據庫並在用戶界面的文本查看顯示查詢結果。Android更新活動textview更改後從另一個活動

我遇到的問題是在某些時候,用戶可以打開另一個活動並更新數據庫。當他們回到原來的活動時,我想用新的數據庫信息更新文本視圖(所以,我將重新查詢數據庫並顯示信息)。

我願意做的另一件事是從用戶(在新的活動中)接受新的輸入並直接更新現有活動中的文本視圖(而不必將現有活動重新查詢數據庫)。但我不確定如何做這樣的事情。

有人可以告訴我關於這樣做的最佳方法嗎?到目前爲止我發現的唯一解決方案與廣播接收機有關,但我不確定這是否最適合我必須做的事情。

我會很感激任何建議。謝謝!

回答

3

如果要在列表視圖中顯示的數據量不大,最簡單的解決方案就是在onResume()方法的數據庫中重新查詢。當活動再次顯示給用戶時,此方法總是被調用。

BroadcastReceiver是一件好事,但這種努力並不值得這麼簡單的任務。

+0

弗拉基米爾,請參閱我對上述帖子的評論。謝謝! – littleK 2010-11-19 18:18:23

+0

請提供您用於更新文本視圖的代碼片段。 – 2010-11-19 18:21:55

+0

啊,沒關係,我錯誤地設置了從數據庫中獲得的值。謝謝你的幫助! – littleK 2010-11-19 18:41:03

2

你可以這樣做:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    db.beginTransaction(); 
    Cursor cur = null; 
    try { 
     cur = db.query("table", 
      null, null, null, null, null, null); 
     cur.moveToPosition(0); 
     String titleString = cur.getString(cur.getColumnIndex("title")); 
     db.setTransactionSuccessful(); 
    } catch (Exception e) { 
     Log.e("Error in transaction", e.toString()); 
    } finally { 
     db.endTransaction(); 
     cur.close(); 
    } 
} 

事務是非常快。 您可以使用onResume()方法填充Textview。

+0

我試圖使用onResume()重新查詢數據庫,然後setText()在TextView,但它似乎並沒有更新..任何想法? – littleK 2010-11-19 18:18:01

0

如果您在onResume中使用setText,則仍然需要通過處理程序刷新/重繪。我發現的最簡單的方法是重新繪製基本佈局視圖。

LinearLayout myBaseLayout = (LinearLayout)findViewById(R.id.linearlayout01); 
myBaseLayout.invalidate(); 

只要確保它在你的處理程序方法。

相關問題