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)、处理程序或 AsyncTask 为您执行此操作。

在这些场景中,有一些关于如何发布到 UI 线程的很好的示例:

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

于 2011-09-15T20:27:33.213 回答
1

我认为一种可能性是将您的活动的引用传递给另一个线程,以便您的线程可以访问 findViewById 方法。

于 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 回答