在我的应用程序中,我试图简单地setText()
在我的Button purchaseButton
. 我有一个警报对话框,它接受一个值并初始化一个 AsyncTask 以完成服务器调用以查找折扣。
所有这一切都很好,当我到达onPostExecute()
.
onPostExecute():
protected void onPostExecute(String result) {
Log.d(tag,"Result of POST: " + result);
if(result != null){
if(result.equals("NO")){
createAlert(1);
}else{
result = result.replaceAll("YES", "");
String discount = result;
discountPrice = price - Double.parseDouble(discount);
Log.d(tag, "Discount price after pull:" + discountPrice);
//setPurchase("Purchase $" + String.valueOf(discountPrice));
new Thread(new Runnable()
{
@Override
public void run()
{
Message msg = handler.obtainMessage();
msg.what = (int) discountPrice;
handler.sendMessage(msg);
}
}).start();
}
}
您可以看到我从 new Thread() 调用处理程序。这使我可以访问处理程序,但从不从处理程序设置按钮的文本。
处理方法:
final static Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
Log.d(tag, "entered handler");
if(msg.what == discountPrice)
{
setPurchaseText(msg.what);
}
}
};
setPurchaseText() 方法:
private static void setPurchaseText(int value){
Log.d(tag, "Entered setPurchaseText");
purchaseButton.setText("Purchase $" + String.valueOf(value));
}
据我所知,这应该允许我从处理程序中设置文本。为什么它不设置文本,我怎样才能让它用我的字符串值设置文本?
任何帮助深表感谢!