0

我有一个数据包侦听器,可以检测数据包何时到达,并且ArrayAdapter在发生这种情况时需要刷新。问题是,如果我尝试访问该adapter.notifyDataSetChanged()方法,则会引发异常:

Exception in packet listener: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 

有任何想法吗?

4

1 回答 1

0

假设您在一个可以访问应用程序上下文的对象中:

如果您在Activity

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        adapter.notifyDataSetChanged();
    }
});

如果您在Fragment

Activity act = getActivity();
if (act != null) {
    act.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            adapter.notifyDataSetChanged();
        }
    });
}

存在其他选项,例如循环器/消息处理程序等,但这是迄今为止最简单的。

于 2014-02-22T02:34:20.010 回答