Есть ли способ пропустить текстовое значение через код в зависимости от щелчка по радиокнопке? - PullRequest
0 голосов
/ 06 июня 2019

[ОБНОВЛЕНИЕ: этот запрос решается другими способами] Я попытался написать 2 кода, которые я буду добавлять здесь. Это не показывает никаких ошибок, но приложение останавливается сразу после запуска. Я пытаюсь передать текстовое значение через TextView, когда пользователь нажимает Radiobutton из RadioGroup. Как новичок, я все еще не могу найти правильный метод. Верны ли мои методы? Какие методы я могу использовать, чтобы исправить эту проблему?

Я не хочу использовать кнопку и тост. Я только хочу использовать компонент, который будет отображать значение, хранящееся в нем через код. Другие методы давали мне ошибки, поэтому я прикрепляю два кода Java, которые не выдают ошибок.

Код 1:

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    RadioGroup radiogroup1;

    RadioButton no;
    RadioButton yes;

   TextView txt = (TextView) findViewById(R.id.textView1);

   @Override

   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main);

       yes =(RadioButton) findViewById(R.id.yes);

       no = (RadioButton) findViewById(R.id.no);

       RadioGroup radioGroup1 = findViewById(R.id.radiogroup1);


   };


   public void onRadioButtonClicked(View view) {
       boolean checked = ((RadioButton) view).isChecked();
       String str;
       str = "";
       // Check which radio button was clicked
       switch (view.getId()) {
           case R.id.yes:
               if (checked)
                   str = "Hold on";
               txt.setText(str);
               break;
           case R.id.no:
               if (checked)
                   str = "Fine go now";
               txt.setText(str);
               break;
       }

   }


}

Код 2

public class MainActivity extends AppCompatActivity {

  RadioGroup radiogroup1;

 RadioButton yes;
 RadioButton no;

   TextView txt = (TextView) findViewById(R.id.textView1);

   @Override

   protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main);

       yes =(RadioButton)findViewById(R.id.yes);
       no = (RadioButton)findViewById(R.id.no);

       RadioGroup radioGroup1 = findViewById(R.id.radiogroup1);

       radiogroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

           @Override
           public void onCheckedChanged(RadioGroup group, int checkedId) {


  int index = radiogroup1.indexOfChild(radiogroup1);

               String str="";
               switch (index) {
                   case 0:

                       str = "Hold on";
                       txt.setText(str);
                       break;

                   case 1:

                       str = "Fine go";
                       txt.setText(str);
                       break;

               }
           }
       });


   }
}

Различный текст будет отображаться для обоих RadioButtons.

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Укажите свою ошибку, чтобы мы могли увидеть, в чем проблема.

В любом случае этот фрагмент кода будет работать:

public class MainActivity extends AppCompatActivity 
implements View.OnClickListener {

private TextView tv;

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

    RadioButton radio1 = findViewById(R.id.radio_1);
    RadioButton radio2 = findViewById(R.id.radio_2);

    radio1.setOnClickListener(this);
    radio2.setOnClickListener(this);

    tv = findViewById(R.id.main_text_view);
}

@Override
public void onClick(View v) {
    String text;
    switch (v.getId()) {
        case R.id.radio_1:
            text = "button1";
            tv.setText(text);
            break;

        case R.id.radio_2:
            text = "button2";
            tv.setText(text);
            break;
    }
}
}
0 голосов
/ 06 июня 2019

Вышеупомянутый метод является правильным.

 public class MainActivity extends AppCompatActivity {

RadioGroup radiogroup1;

RadioButton no;
RadioButton yes;
TextView txt ;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   setContentView(R.layout.activity_main);

   yes =(RadioButton) findViewById(R.id.yes);
   no = (RadioButton) findViewById(R.id.no);
   RadioGroup radioGroup1 = findViewById(R.id.radiogroup1);
   txt= (TextView) findViewById(R.id.textView1)

};


public void onRadioButtonClicked(View view) {
   boolean checked = ((RadioButton) view).isChecked();
   String str;
   str = "";
   // Check which radio button was clicked
   switch (view.getId()) {
       case R.id.yes:
           if (checked)
               str = "Hold on";
           break;
       case R.id.no:
           if (checked)
               str = "Fine go now";
           break;
   }
           txt.setText(str);

}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...