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 に答える