1

ユーザーがボタンを押すと、ビューが消えます (消えます)。

次のようにして、 onCreate()メソッド (メイン UI スレッド)内で作成できます。

findViewById(R.id.llLoadingGallery).setVisibility(View.GONE);

ただし、別のスレッド内 (メイン UI スレッド外) で同じことを実行できるようにしたいと考えています。上記を自分のスレッドにライブで入れようとしましたが、うまくいきませんでした。

前もって感謝します!

## 編集 ####

より明確にするために、次のようなことをしたいと思います。

        @Override
    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.teste_aba_3);

    botao_tab_musica.setOnClickListener( new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            ...
        findViewById(R.id.llLoadingGallery).setVisibility(View.GONE);
        }
    });

}

ただし、それは機能しません。どうすればこれを修正できますか?

4

4 に答える 4

4

と呼ばれるきちんとした方法がありますrunOnUiThread

        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                findViewById(R.id.llLoadingGallery).setVisibility(View.GONE);
            }
        });

編集:あなたのコードで

botao_tab_musica.setOnClickListener( new View.OnClickListener() {

@Override
public void onClick(View v) {

        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                findViewById(R.id.llLoadingGallery).setVisibility(View.GONE);
            }
        });
}

});

于 2011-09-15T20:30:35.790 に答える
3

View.post(Runnable)、View.postDelayed(Runnable, long)、Handler、または AsyncTask を使用してこれを行うことをお勧めします。

これらのシナリオで UI スレッドに投稿する方法について、いくつかの良い例があります。

http://developer.android.com/resources/articles/painless-threading.html

于 2011-09-15T20:27:33.213 に答える
1

スレッドが findViewById メソッドにアクセスできるように、アクティビティへの参照を他のスレッドに渡すことが 1 つの可能性だと思います。

于 2011-09-15T20:30:52.157 に答える
1

これを試して

findViewById(R.id.llLoadingGallery).post(new Runnable()
        {

            @Override
            public void run()
            {
               findViewById(R.id.llLoadingGallery).setVisibility(View.GONE);
            }
        });

または AsyncTask を作成します

于 2011-09-15T20:31:16.277 に答える