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

Ram Kiranの回答に加えて、いくつかの改善を加えたいと思います。

まず、onClick メソッドに findViewById を入れる必要はないと思います。あなたのアプリは、ボタンを押すたびにビューを見つけようとしますが、これは 1 回で済むと確信しています。最初の改善点は、onClick メソッドの findViewById を削除することです。

2 番目の改善として、xml ファイルの onClick メソッドを利用android:onclick="addText" して、メソッドを作成できるようにすることができます。

public void addText(View v)

TextView ごとに行うのではなく、Java コードで 1 回実行します。View v in 引数にはデータがテキストとして含まれているため、findViewById を作成する必要さえありません!!! ((TextView) v).getText() はテキスト値を取得するのに十分です!

したがって、コードは巨大な Java ファイルではなく数行になります。

3 番目の改善点として、TextView の代わりにボタン (または ImageButton) を使用し、複数の状態 (Button には既に行われています) を使用して、ボタンが押されたときまたは選択されたときに視覚的な手がかりを使用します。

<?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 に答える
1

これを試して:

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

希望の助け

于 2013-06-14T04:02:21.183 に答える