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,并且我按下按钮两次或更多次,我可视化 TextView 中的文本重复多次,具体取决于我按下按钮的次数。

因此,如果 text01 的文本是“Example”,text03 “Example2”和 text05 “Example3”,我在按钮上按了两次,结果是

示例 示例 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);

您将不得不使用所添加内容的间距(我不知道文本的格式),但这种方法应该允许您为每个按下的按钮添加一次文本。仅在每个条件中使用 setText 会将TextView唯一的文本设置为该字符串,它不会考虑额外按下其他按钮,查看您的示例代码是您想要做的。

于 2013-09-27T14:33:28.397 回答