私のアプリケーションでは、単に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));
}
私の知る限り、これによりハンドラーからテキストを設定できるはずです。テキストを設定しないのはなぜですか?また、文字列値でテキストを設定するにはどうすればよいですか?
どんな助けでも大歓迎です!