0

我正在尝试创建一个简单的数字键盘。我将信息发送到 TextView 就好了,但每次单击新按钮时,它都会删除旧按钮。如何保留 TextView 中的内容并添加新内容。你推 1 它去 TextView,你推 2 它去 TextView 但删除之前在那里的“1”。我希望“1”保持不变,所以当你按下两个按钮时,你有 12 个。

final TextView singlevalue = (TextView) findViewById(R.id.priceInput);
one.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        final Button one = (Button) findViewById(R.id.one);
        final String stringone = one.getText().toString();
        singlevalue.setText(String.valueOf(stringone);
    }
});

我知道像这样的东西 +"" 在 (stringone) 之后,但是什么???

two.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        final Button two = (Button) findViewById(R.id.two);
        final String stringtwo = two.getText().toString();
        singlevalue.setText(String.valueOf(stringtwo)+"");
    }
});
4

4 回答 4

1

您需要全局获取一个变量并在单击按钮时添加新输入的值

比如说

public String totalString = "";


final TextView singlevalue = (TextView) findViewById(R.id.priceInput);
one.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        final Button one = (Button) findViewById(R.id.one);
        final String stringone = one.getText().toString();
        totalString = totalString+""+stringone ;
        singlevalue.setText(totalString);
    }
});

two.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        final Button two = (Button) findViewById(R.id.two);
        final String stringtwo = two.getText().toString();
        totalString = totalString+""+stringtwo ;
        singlevalue.setText(totalString);
    }
});
于 2013-06-14T03:59:41.700 回答
1

尝试这个:

singlevalue.setText(singlevalue.getText().toString() + "" + String.valueOf(stringtwo));

希望帮助

于 2013-06-14T04:02:21.183 回答
1

除了 Ram Kiran 的回答之外,我还想进行一些改进。

首先,我认为 findViewById 不应该放在 onClick 方法中。每次按下按钮时,您的应用程序都会尝试查找视图,我很确定这可以完成一次。第一个改进应该是删除 onClick 方法的 findViewById。

作为第二个改进,您可以从 xml 文件中的 onClick 方法中受益,并使用android:onclick="addText" 这只会让您创建一个方法:

public void addText(View v)

在您的 Java 代码中执行一次,而不是为每个 TextView 执行一次。View v in 参数包含文本形式的数据,因此甚至不需要创建 findViewById !!!((TextView) v).getText() 足以获取文本值!

因此,您的代码将是几行而不是一个巨大的 java 文件

作为第三个改进,我将使用按钮(或 ImageButton)而不是 TextView,并使用多个状态(按钮已经为您完成)在按下或选择按钮时使用视觉线索。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true"
   android:drawable="@drawable/login_selected" /> <!-- pressed -->
  <item android:state_focused="true"
   android:drawable="@drawable/login_mouse_over" /> <!-- focused -->
  <item android:drawable="@drawable/login" /> <!-- default -->
</selector>

如果您需要更多信息,请发表评论;-)

于 2013-06-14T04:48:34.147 回答
1

这应该工作...

final TextView singlevalue = (TextView) findViewById(R.id.priceInput);
final Button one = (Button) findViewById(R.id.one);
final Button two = (Button) findViewById(R.id.two);
String stringone = new String();
String stringtwo = new String();

one.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        stringone = one.getText().toString();
        singlevalue.setText(stringone+""+stringtwo);
    }
});

two.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        stringtwo = two.getText().toString();
        singlevalue.setText(stringone+""+stringtwo);
    }
});
于 2013-06-14T04:03:54.860 回答