java.lang.IllegalStateException甚至从UI线程通过广播更新

时间:2014-10-28 16:28:44

标签: android listview android-listview notifydatasetchanged

我想知道为什么我得到这个错误并且我的应用程序崩溃,导致我正确地从主ui线程通过广播使用notifyDataSetChanged。

10-24 14:13:36.563:E / AndroidRuntime(24830):java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知。确保不从后台线程修改适配器的内容,而只是从UI线程修改。确保适配器在其内容更改时调用notifyDataSetChanged()。 [在ListView(2131099732,类android.widget.ListView)中使用Adapter(类com.example.irclient2.adapter.ConversaAdapter)]

当我收到一条消息(并且我需要更新关于它的ui)时,我在将消息添加到数据集后发送广播;

public void receiveChannelUserMessage(User user, String msg,
        CategoriaMSG category) {

            // creates the message
    Mensagem mensagem = new Mensagem(user.createSnapshot(),
            Colors.removeFormattingAndColors(msg), category, nickcolor);

            // add the message
    canalConversa.addMessage(mensagem);

            // inform UI from broadcast
    Intent it = new Intent(ChatFragment.ACTION_CONVERSASETCHANGED);
    it.addCategory(MyService.CANAL);
    LocalBroadcastManager.getInstance(MyService.this).sendBroadcast(it);

}

这是listview所在片段中的接收者:

private BroadcastReceiver BR_notifyData = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (listview != null) {
            ((ConversaAdapter) listview.getAdapter())
                    .notifyDataSetChanged();
        }
    }
};

接收者在onResume()注册,在onPause()注册; 我对这一切做了什么? 提前致谢。

0 个答案:

没有答案