После Android onResume ListView пуст - PullRequest
2 голосов
/ 13 апреля 2011

У меня есть ListView, в котором я пытаюсь заполнить данные из базы данных SQL Lite.Во время возобновления я добавляю прослушиватель кликов и снова заполняю представление списка.Методы onResume, populateListView () и onPause находятся ниже.Полный исходный код доступен на GitHub .

onResume:

@Override
protected void onResume() {
    IntentFilter filter = new IntentFilter();
    filter.addAction(TalkServerIntent.INTENT_NEW_MESSAGES.toString());
    registerReceiver(receiver, filter);

    setContentView(R.layout.main);

    talkListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parentView, View childView,
                            int position, long id) {
            GeoCamTalkMessage msg = adapter.getTalkMessage(position);
            if (msg.hasAudio()) {
                try {
                    UIUtils.playAudio(getApplicationContext(), msg, player,
                            siteAuth);
                } catch (Exception e) {
                    UIUtils.displayException(getApplicationContext(), e,
                            "Cannot retrieve audio");
                }
            }
        }
    });

    populateListView();
    super.onResume();
}

populateListView:

private void populateListView() {
    try {
        talkMessages = messageStore.getAllMessages();
    } catch (Exception e) {
        Log.i("Talk", "Error:" + e.getMessage());
    }

    if (talkMessages != null) {
        adapter.setTalkMessages(talkMessages);
        talkListView.setAdapter(adapter);
    }
}

Я не делаю ничего особенногона onPause, но так как значения хранятся в базе данных, я не думаю, что я должен буду.

onPause

@Override
protected void onPause() {
    unregisterReceiver(receiver);
    super.onPause();
}

Что я делаю неправильно, из-за чего ListView необновляться на резюме?

1 Ответ

5 голосов
/ 13 апреля 2011

Вы можете попробовать переместить setContentView(R.layout.main); в метод onCreate ().

Установка его в onResume() каждый раз может вызвать проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...