我有一个数据包监听器,可以检测数据包何时到达,当发生这种情况时我需要刷新ArrayAdapter
。问题是,如果我尝试访问adapter.notifyDataSetChanged()
方法,则抛出异常:
Exception in packet listener: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
有什么想法吗?
答案 0 :(得分: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();
}
});
}
存在其他选项,例如looper / message handler等,但这是迄今为止最简单的。