2014-09-02 149 views
1

我想在用戶將東西添加到購物車時更改TextView。初始值爲0.00,並且在用戶添加項目時,將其添加到值中。點擊允許用戶選擇項目的按鈕時,彈出AlertDialog對話框。在Android中更改TextView的值

我的問題是一個java.lang.StringToReal.invalidReal錯誤。我認爲我可能沒有正確理解TextVeiw的價值,但我不完全確定。

感謝任何人看着這個。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    findViewById(R.id.button1).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      builder = new AlertDialog.Builder(MainActivity.this); 
      builder.setTitle(R.string.pickItem); 
      builder.setItems(R.array.items, new DialogInterface.OnClickListener(){ 
       public void onClick(DialogInterface dialog, int which) { 

        CartItems ci = new CartItems(); 
        ci.setItem(which); 
        ci.setPrice(which); 
        cart.add(ci); 

        totalPriceTV = (TextView)findViewById(R.id.textView2); 

        double totalPrice = Double.parseDouble(totalPriceTV.toString()); 
        totalPrice += ci.getPrice(); 
        String newTotal = new Double(totalPrice).toString(); 
        totalPriceTV.setText(newTotal); 

        } 
      }); 
      builder.create(); 
      builder.show(); 

     } 

    }); 

    } 
+0

發佈整個錯誤 – 2014-09-02 02:25:46

+0

也許使用totalPriceTV.getText();而不是totalPriceTV.toString()? – Jerry 2014-09-02 02:29:01

回答

2

爲了改變在Android上TextView的文本只是使用普通的geters和setter方法:

TextView.getText(); 
TextView.setText("text"); 

既然你與數字打交道,我建議你使用DecimalFormat當解析一個double到string。您可以輕鬆定義數字格式(即逗號後的數字或分隔符的數量)

DecimalFormat df = new DecimalFormat("###,###.00"); 
String price = df.parse(someDouble); 
textView.setText(price); 

對於這些數字:234123.2341234 12.341123DecimalFormat會給你以下結果:

234,123.2312.34

+0

就是這樣。感謝您向我指出這一點。 – WeVie 2014-09-02 03:11:17

1

只要使用totalPriceTV.setText(「」+ totalPrice);

totalPriceTV.setText(將String.valueOf(totalPrice));

3

在這一行

double totalPrice = Double.parseDouble(totalPriceTV.toString()); 

變化totalPriceTV.toString()totalPriceTV.getText().toString(),然後再試一次。

+0

就是這樣。謝謝! – WeVie 2014-09-02 03:11:47

1

從頁摘自:http://developer.android.com/reference/android/view/View.html#toString()

在API級別1 返回包含此對象的簡明的,人類可讀的描述的字符串。鼓勵子類覆蓋此方法並提供一個考慮對象類型和數據的實現。默認實現等效於以下表達式:

getClass().getName() + '@' + Integer.toHexString(hashCode()) 

因此,您應該使用getText();

即:

totalPriceTV.getText()