2012-12-31 26 views
0

在我的主要活动中,我有一个链接到按钮的方法,当按钮被按下时它应该被禁用,然后发出HTTP请求,并且在方法结束后应该再次启用按钮。活动过程中多次更新用户界面方法

public void onClick(View view) {   
    Button button = (Button) findViewById(R.id.my_button); 
    button.setEnabled(false); 
     button.setTextColor(Color.GRAY); 
    try { 
     // make HTTP request 
    } catch (IOException e) { 
     // error 
    } finally { 
     button.setEnabled(true); 
     button.setTextColor(Color.GRAY); 
    } 
} 

所以正常的按钮应该改变颜色后,我点击它,然后我等待的情况发生,将超时的要求,所以我等待3秒钟,然后按钮的颜色应该改回来。

不幸的是,颜色/按钮不会更新一次,直到方法结束。这是什么原因?它是如何正确完成的?

+0

看起来好像你在说“不幸的是,颜色不会更新,直到方法结束。”这不是你想要发生的事吗?你能澄清一下发生了什么吗? – leenephi

回答

3

使用AsyncTask进行HTTP调用(将其放置在方法中:doInBackground()),并让代码再次在方法onPostExecute()上重新启用该按钮。

+1

精彩是的,应该这样做 – Mahoni

+0

在定位更改期间,这对于重新启动Activity不起作用。 Backgrond在Android的工作很不幸很难做到。 – fhucho

相关问题