2014-11-03 2 views
0

моя проблема в том, что, когда установлен один флажок, он показывает текст, который он должен использовать. Но когда оба флажка отмечены, он отображает только текст второго.Строка возвращает число вместо текста?

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> 
+0

хорошо, конечно, его будет, вы перезаписать текст, когда он проходит 'secondCheck' – tyczj

+2

Рекомендуем также firstCheck.isChecked() == false избыточно, используйте! firstCheck.isChecked() – reactivemobile

ответ

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)); 
} 
+0

text.setText (R.string.checkbox1 + R.string.checkbox2); не будет работать, потому что R.string.checkbox1 и 2 возвращают значения int! Таким образом, вы получаете доступ к неправильному ресурсу (если он существует)! –

+0

@haywire Я просто сосредоточился на вопросе в вопросе .. не могу проверить все ;-) –

+0

Это нормально, но, пожалуйста, исправьте его, так как он не будет работать. –

1

Ваш код

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

ли перезаписывать текст таким образом, что вам нужно, чтобы добавить текст checkbox_2, а не просто установить его.

+0

Ofcourse, спасибо! довольно новый для этого – Hees1989

Смежные вопросы