0

ボタンを押すだけで実行されるこのコードがあります。

 Button myButton = (Button) view.findViewById(R.id.button01);
        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


class = new MyClass();
class.Method();
if(class.Method()) {

    TextView.append(Html.fromHtml((getString(R.string.text01))));

}
else {

    TextView.append(Html.fromHtml((getString(R.string.text02))));

}


try {
    if (class.Method2() && (class.Method3()))
    {
        TextView.append(Html.fromHtml((getString(R.string.text03))));

    }

    else {
        TextView.append(Html.fromHtml((getString(R.string.text04))));

    }
}
catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

try {
    if(class.Method4()) {

        TextView.append(Html.fromHtml((getString(R.string.text05))));

    }
    else {

        TextView.append(Html.fromHtml((getString(R.string.text06))));

    }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
            }
        });

メソッドが true を返し、ボタンを 2 回以上押すと、ボタンを押した回数に応じて TextView のテキストが何度も繰り返されます。

したがって、text01 のテキストが「例」、text03 が「例 2」、text05 が「例 3」の場合、ボタンを 2 回押すと、結果は次のようになります。

例 例2 例3 例 例2 例3

なんで?どうすれば修正できますか?

4

2 に答える 2

1

TextView.setText("parameter")代わりに使用する必要がありますTextView.append();

于 2013-09-27T14:26:13.223 に答える
0

ボタンを押すたびにテキストを追加し続ける append メソッドを使用していることを考えると、これらの結果に驚かれることはありません。一度だけテキストを追加したい場合は、どのボタンが押されたか、どのテキストが に追加されたかを追跡する何らかの方法が必要ですTextView。ボタンの数によっては、一方が他方よりも簡単な場合があります。

追加する代わりに、テキストを連結する通常の文字列を使用します。固定文字列を使用しているようです。これは、追加したものと追加していないものを簡単に確認できることを意味します。私はおそらくこのようなことをするだろう

String concatResult = "";
//button onClick set up goes here

if(class.Method()){
    String stringToAdd = getStringFromResources(); //get appropriate string
    if(!concatResult.contains(stringToAdd){
        concatResult += stringToAdd;
    } 
}

//when you're done with the tests for which string to add
textView.setText(concatResult);

追加されたものの間隔をいじる必要があります (テキストがどのようにフォーマットされているかはわかりません) が、このアプローチでは、ボタンが押されるたびにテキストを 1 回追加できるはずです。各条件内で setText を使用するTextViewだけでは、その文字列のみのテキストが設定されます。他のボタンをさらに押すことはできません。サンプル コードを確認する必要があります。

于 2013-09-27T14:33:28.397 に答える