在Android中更改TextView的值

时间:2014-09-02 02:21:54

标签: java android android-activity

我想在用户向购物车添加内容时更改TextView。初始值为0.00,当用户添加项目时,会将其添加到值中。我点击了一个允许用户选择项目的按钮时弹出AlertDialog。

我的问题是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();

        }

    });

  }

4 个答案:

答案 0 :(得分:3)

在这一行

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

totalPriceTV.toString()更改为totalPriceTV.getText().toString(),然后重试。

答案 1 :(得分:2)

要更改Android中TextView的文字,只需使用普通的geters和setter:

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

由于你处理数字,我建议你在解析double到string时使用DecimalFormat。您可以轻松定义数字的格式(即逗号或分隔符后的位数)

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

对于这些数字:234123.2341234 12.341123 DecimalFormat会给您以下结果:

234,123.23 12.34

答案 2 :(得分:1)

只需使用totalPriceTV.setText(“”+ totalPrice);

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

答案 3 :(得分:1)

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

在API级别1中添加 返回一个字符串,其中包含此对象的简洁,可读的描述。鼓励子类重写此方法并提供考虑对象类型和数据的实现。默认实现等效于以下表达式:

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

因此,您应该使用getText();

即:

totalPriceTV.getText()