Kotlin как сохранить переключатель и отображать значения? - PullRequest
0 голосов
/ 02 марта 2020

Итак, я пытаюсь выучить Kotlin и использую Android Стад ios для практики и обучения. В настоящее время я пытаюсь выполнить простое действие с RadioGroup (с Radio Buttons), сохранить выбранное значение, а затем отобразить, сколько из каждого значения (radiobutton) было выбрано.

У меня вопрос, как мне это сделать? напечатать, какая кнопка была выбрана, и сколько кнопок этого типа было выбрано?

Я попробовал следующее:

    //in MainActivity.kt in my MainActivity class 
    s1RadioGroup.setOnCheckedChangeListener { _, checkedId ->
        //if catButton was selected add 1 to variable cat
        if(checkedId == R.id.catRadio) {
            catSum += 1
            print(catSum)
        }
        //if dogButton was selected add 1 to variable dog
        if(checkedID == R.id.dogRadio) {
            dogSum += 1
            print(dogSum)
    }

Не уверен, правильно ли я поступаю, но желаемый вывод: enter image description here

У меня есть макет, идентификаторы, кнопка очистки и все остальное работает. Но я не уверен, как использовать событие onClickListener для 'SaveButton' , чтобы сохранить выбранную радиокнопку и затем отобразить результаты (например: Cat = 1, Dog = 2). Буду признателен за любые предложения, или если вы можете указать мне правильное направление.

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Если вы хотите сохранить все данные, вы можете использовать базу данных или общий доступ. и если вы хотите только щелкнуть по отображаемому значению, вы можете сделать это в кнопке save.

String result1 = ""
String result2 = ""
String result3 = ""
RadioGroup radioGroup = findViewById('yourRGidFromXml')
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

@Override
public void onCheckedChanged(RadioGroup arg0, int arg1) {
    int selectedId = radioGroup.getCheckedRadioButtonId();
    RadioButton rb = findViewById(selecetedId)
    result1= rb.getText.toString()
    Log.i("ID", String.valueOf(selectedId));

  }
});
//this just for see result
btnSave.OnclikListener(view -> {
Log.i("Result1",result1)
})

вы можете скопировать код и android преобразует этот код в kotlin.

0 голосов
/ 02 марта 2020

Вы можете попробовать что-то вроде этого:

  RadioButton rb = (RadioButton) findViewById(R.id.radio_button);
  // restore previous state
  rb.setChecked(lastButtonState);
  // set a listener
  rb.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
        // call this to enable editing of the shared preferences file
        // in the event of a change
        SharedPreferences.Editor editor = sharedpreferences.edit();
        Boolean isChecked = rb.isChecked();
        // use this to add the new state
        editor.putBoolean(BUTTON_STATE, isChecked);
        // save
        editor.apply();
     }
  });

Я понимаю, что это в Java, и вы запрашиваете kotlin, но SharedPreference - это то, что вам нужно сохранить состояние переключателя.

...