Обновление текста активности Android после изменений из другой активности - PullRequest
0 голосов
/ 19 ноября 2010

У меня есть операция Android, которая, onCreate (), будет запрашивать базу данных и отображать результаты запроса в текстовых представлениях в пользовательском интерфейсе.

Проблема, с которой я столкнулся, заключается в том, что в какой-то момент пользователи могут открыть другое действие и обновить базу данных. Когда они вернутся к исходному действию, я хотел бы, чтобы текстовые представления обновлялись с новой информацией базы данных (таким образом, я буду повторно запрашивать базу данных и отображать информацию).

Еще одна вещь, которую я готов сделать, - это получить новый ввод от пользователя (в новом действии) и напрямую обновить текстовое представление в существующем действии (без повторного запроса существующего действия к базе данных). Но я тоже не знаю, как сделать что-то подобное.

Может кто-нибудь сообщить мне, как лучше всего это сделать? Единственное решение, которое я нашел до сих пор, касается приемников вещания, но я не уверен, что это лучше всего подходит для того, что я должен делать.

Буду признателен за любой совет. Спасибо!

Ответы [ 3 ]

3 голосов
/ 19 ноября 2010

если объем данных, отображаемых в виде списка, невелик, самое простое решение - просто запросить в базе данных метод onResume (). Этот метод всегда вызывается, когда активность снова появляется у пользователя.

BroadcastReceiver - это хорошо, но усилия не стоят такой простой задачи.

2 голосов
/ 19 ноября 2010

Вы можете сделать:

@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 голосов
/ 17 февраля 2011

если вы используете setText в вашем onResume, вам все равно придется обновлять / перерисовывать через обработчик.Самым простым способом, который я нашел, было перерисовать базовый вид компоновки.

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

Просто убедитесь, что это ваш метод-обработчик.

...