読者です 読者をやめる 読者になる 読者になる

リア充爆発日記

You don't even know what ria-ju really is.

CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

UIスレッド以外でViewの操作をしようとするとタイトルのようなバチがあたります。あたりました。

例えばこんなコードはバチあたり。

    public void onCreate(Bundle savedInstanceState) {
  〜中略〜
        overlay.runOnFirstFix(new Runnable() {
            @Override
            public void run() {
                mapView.getController().animateTo(overlay.getMyLocation());
                mButton.setEnabled(true);
            }
        });

こういう場合はHandlerを使うのが一番手軽だと思われ。

    private Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 100:
                    mButton.setEnabled(true);
                    break;
            }
        }
    };

    public void onCreate(Bundle savedInstanceState) {
  〜中略〜
        mButton.setEnabled(false)
        overlay.runOnFirstFix(new Runnable() {
            @Override
            public void run() {
                mapView.getController().animateTo(overlay.getMyLocation());
                mHandler.sendEmptyMessage(100);
            }
        });

Yes!We can!