【问题标题】:How recover data from a RadioGroup in another activity?如何从另一个活动中的 RadioGroup 恢复数据?
【发布时间】:2017-10-28 17:23:33
【问题描述】:

我需要恢复用户选择的选项并将其传递给另一个活动,我该怎么做?

public class SelectServicesActivity extends AppCompatActivity {
Button btn_seleccion;
RadioGroup radioGroup;
TextView tvServicio1, tvServicio2, tvServicio3;
RadioButton rb1, rb2, rb3;

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

    radioGroup = (RadioGroup) findViewById(R.id.rg_servicios);
    btn_seleccion = (Button) findViewById(R.id.btn_seleccion);
    rb1 = (RadioButton) findViewById(R.id.rb1);
    rb2 = (RadioButton) findViewById(R.id.rb2);
    rb3 = (RadioButton) findViewById(R.id.rb3);


btn_seleccion.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (radioGroup.getCheckedRadioButtonId() == -1)
            {
                // no radio buttons are checked
                Toast.makeText(getApplicationContext(), "Por favor, selecciona una opción", Toast.LENGTH_SHORT).show();
            }
            else
            {
                // one of the radio buttons is checked
                Intent intent = new Intent (v.getContext(), SelectDayActivity.class);
                startActivityForResult(intent, 0);

            }

             }

    });


     }}

用户选择的选项必须在另一个活动中检索。

谢谢

【问题讨论】:

    标签: android radio-group data-recovery


    【解决方案1】:

    试试这个

    Intent intent = new Intent (v.getContext(), SelectDayActivity.class);
    intent.putExtra("value", valueToSend);
                    startActivityForResult(intent, 0);
    

    然后在第二个活动中得到它onCreate()

    String value = getIntent().getStringExtra("value");
    

    【讨论】:

      【解决方案2】:

      我修改了这部分并添加了一个 Toast 来验证所选选项:

      int selectedId = radioGroup.getCheckedRadioButtonId();
                  RadioButton rb = (RadioButton) radioGroup.findViewById(selectedId);
      
                  if(selectedId == -1) {
                      Toast.makeText(getApplicationContext(), "Por favor, selecciona una opción", Toast.LENGTH_SHORT).show();
                      return;
                  }
                  Toast.makeText(SelectServicesActivity.this, "servicio " + rb.getText().toString(), Toast.LENGTH_LONG).show();
      
                  //RadioButton radioButton = (RadioButton) findViewById(selectedId);
                  String selected_option = rb.getText().toString().trim();
                  Intent intent = new Intent (SelectServicesActivity.this, SelectDayActivity.class);
                  intent.putExtra("SELECTED_ITEM", selected_option);
                  startActivityForResult(intent, 0);
      
      
                   }
      

      在我想接收信息的其他活动中,我添加了以下内容:

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_verificar_datos);
      
          textView_tipo_servicio = (TextView) findViewById(R.id.textView_tipo_servicio);
          String selected_option = getIntent().getStringExtra("SELECTED_ITEM");
          textView_tipo_servicio.setText(selected_option);
      

      问题是信息没有显示出来。

      【讨论】:

      • @msh.nayan 看看
      • 在 SelectServicesActivity.class Toast 显示正确的选项?
      • 我已经更新了上面的答案(我的第一个答案)。请检查
      【解决方案3】:

      我不是 100% 确定,但您可以在按钮单击时添加以下行

      int selectedId = radioGroup .getCheckedRadioButtonId();
      if(selectedId == -1) {
          Toast.makeText(getApplicationContext(), "Por favor, selecciona una opción", Toast.LENGTH_SHORT).show();
          return;
      }
      
      RadioButton radioButton = (RadioButton) findViewById(selectedId);
      String selected_option = radioButton.getText().toString().trim();
      Intent intent = new Intent (SelectServicesActivity , SelectDayActivity.class);
      Bundle bundle = new Bundle();
      bundle.putString("SELECTED_ITEM", selected_option);
      intent.putExtra("SELECTED_BUNDLE", bundle);
      startActivityForResult(intent, 0);
      

      现在在 onCreate() 内的接收端 (SelectDayActivity.class) 检索 selected_option 像这样

      Bundle bundle = getIntent().getBundleExtra("SELECTED_BUNDLE");
      String value = bundle.getString("SELECTED_ITEM");
      Log.e("TAG", "_log : value : " + value); // should print your option
      

      【讨论】:

      • 我觉得需要声明一个字符串变量,你觉得呢?
      • 您不需要在 SelectServicesActivity.class 上声明字符串变量。但在 SelectDayActivity.class 上,您可以全局声明 String selected_option。
      • 我编译了我的代码,但在第二个活动中未显示所选项目
      • 打印一个 Log/Toast 来检查 selected_option 的值是多少。请检查此
      • @Odalis T :我只是在验证我的代码及其完美运行。如果您有一个 RadioGroup(其中有 3 个带有选项的单选按钮 [例如] Yes、No、May Be)。如果您选择其中任何一个(假设可能是)然后单击按钮,它将继续下一个活动,我检索数据并打印该数据(它显示可能是)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 2014-05-03
      • 1970-01-01
      相关资源
      最近更新 更多