字符串返回数字而不是文本?

时间:2014-11-03 16:37:34

标签: android

我的问题是,当选中一个复选框时,它会显示它应该的文本。 但是当选中这两个复选框时,它只显示第二个复选框的文本。

public class MainActivity extends Activity {

    TextView text;
    CheckBox firstCheck, secondCheck;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        firstCheck = (CheckBox) findViewById(R.id.checkBox1);
        secondCheck = (CheckBox) findViewById(R.id.checkBox2);
        text = (TextView) findViewById(R.id.textView2);
    }

    public void buttonClick(View view) {
        if(firstCheck.isChecked()) {
            text.setText(R.string.checkbox_1);
        }
        if(secondCheck.isChecked()) {
            text.setText(R.string.checkbox_2);
        }
        if(firstCheck.isChecked()==false && secondCheck.isChecked()==false) {
            text.setText(R.string.unchecked);
        }
    }
}

的strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Les 2_1</string>
    <string name="hello_world">Hello world!</string>
    <string name="checkbox_1">Checkbox 1 </string>
    <string name="checkbox_2">Checkbox 2</string>
    <string name="button_1">Click here!</string>
    <string name="textview_2">And?</string>
    <string name="unchecked">No buttons checked!</string>

</resources>

2 个答案:

答案 0 :(得分:1)

您的代码

if(secondCheck.isChecked()) {
            text.setText(R.string.checkbox_2);
        }

是否覆盖了文本,因此您需要附加checkbox_2文本,而不仅仅是设置它。

答案 1 :(得分:0)

if(firstCheck.isChecked()) {
    text.setText(R.string.checkbox_1);
}
if(secondCheck.isChecked()) {
    text.setText(R.string.checkbox_2);
}

如果同时输入了if,则第二个setText会覆盖第一个文本。

您可以通过附加文字来解决此问题

Resources res = getResources();
text.setText(text.getText().toString() + res.getString(R.string.checkbox_x));

或添加一个涵盖两者的

if (firstCheck.isChecked() && secondCheck.isChecked()) {
    text.setText(res.getString(R.string.checkbox_1) + res.getString(R.string.checkbox_2));
}