0

我最近在我的应用程序中添加了一个方法,该方法将自动格式化文本视图,让我们说:“50000”到“50,000”,这绝对是完美的。现在我遇到的问题是,在我的应用程序中有多个按钮功能可以从该文本视图中添加或删除某些数量,所以让我们说 textview =“5,000”,当您单击按钮时,它会删除“1000”问题是它强制关闭应用程序,因为从技术上讲,textview 不再是整数,而是字符串。这是代码和错误。

    //formats the textview to show commas
    double number = Double.parseDouble(textView1.getText().toString());
    DecimalFormat formatter = new DecimalFormat("###,###,###");
    textView1.setText(formatter.format(number));


    Button btnremove1000 = (Button) findViewById(R.id.btnremove1000);
    btnremove1000.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TextView textView1 = (TextView) findViewById(R.id.textView1);

            int amount = Integer.parseInteger(textView1.getText()
                    .toString()) - 1000;
            textView1.setText(String.valueOf(amount));

            Toast msg = Toast.makeText(MainScreen.this,
                    "1,000 removed!", Toast.LENGTH_SHORT);
            msg.show();
        }
    });


java.lang.NumberFormatException: Invalid int: "5,000"

现在我该如何做到这一点,以便我仍然可以显示逗号但添加和删除值?

我唯一能想到的是以某种方式删除逗号,添加/删除一个值,然后重新格式化它以再次显示逗号?

4

4 回答 4

2

替换这个:

int amount = Integer.parseInteger(textView1.getText().toString()) - 1000;

和:

String fromTV = textView1.getText().toString();

String commaRemoved = fromTV.replace(",", "");

int amount = Integer.parseInteger(commaRemoved) - 1000;

在一行中:

int amount = Integer.parseInteger(
                    textView1.getText().toString().replace(",", "")) - 1000;

编辑:按照 Eng.Fouad 的建议使用代替replace()replaceAll()

于 2013-08-30T00:40:33.220 回答
1

使用该DecimalFormat.parse()方法,使用与DecimalFormatter最初格式化字符串相同的方法。

于 2013-08-30T00:45:23.017 回答
0

作为一般规则,您不应将数据存储在视图中。

尽量保持分开。

int amount = 5000000;

textView.setText(formatter.format(amount));

button.setOnClickListener(new OnclickListener(){
    public void onClick(View view){
        amount -= 1000;
        textView.setText(formatter.format(amount));
    }
});

在这里,数据存储在视图之外并且易于管理。数据只会从一个方向进入视图。

于 2013-08-30T01:00:11.217 回答
0

将此行替换int amount = Integer.parseInteger(textView1.getText().toString()) - 1000;为以下代码:-

String strText = textView1.getText().reaplace(",",""); int amount = Integer.parseInteger(strText) - 1000

还有一件事你不需要指定格式,如###、###、###。如果你使用##,###就足够了。

于 2013-08-30T07:16:28.400 回答