1

別のスレッドで関数を実行する次のコードがあります。

Button buttonb = (Button) this.findViewById(R.id.buttonb);
    buttonb.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

        …
                progressBar.setVisibility(View.VISIBLE);

                Thread thread = new Thread() {
                    @Override
                    public void run() {
                        matrixOperation(sourcePhoto);
                    }
                };
                thread.start();

                progressBar.setVisibility(View.INVISIBLE);
        …

        }
    });

しかし、実行すると、次のエラーが発生します。

Can't create handler inside thread that has not called Looper.prepare()

検索したところ、このエラーの理由の 1 つは「バックグラウンド スレッドから AsyncTask を実行できません。の「スレッド化ルール」セクションを参照してください。ただし、これはメイン アクティビティから呼び出しているバックグラウンド スレッドではありません。

これを修正する方法を教えてください。

4

1 に答える 1