当用户按下按钮时,我想让视图消失(即将消失)。
我可以通过执行以下操作在 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);
}
});
}
然而,这不起作用!我该如何解决这个问题?
答案 0 :(得分: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);
}
});
}
});
答案 1 :(得分:2)
我建议使用View.post(Runnable),View.postDelayed(Runnable,long),Handler或AsyncTask为您执行此操作。
在这些场景中,如何发布到UI线程有一些很好的例子:
http://developer.android.com/resources/articles/painless-threading.html
答案 2 :(得分:1)
我认为一种可能性是将对您的活动的引用传递给另一个线程,以便您的线程可以访问findViewById方法。
答案 3 :(得分:1)
试试这个
findViewById(R.id.llLoadingGallery).post(new Runnable()
{
@Override
public void run()
{
findViewById(R.id.llLoadingGallery).setVisibility(View.GONE);
}
});
或创建AsyncTask