2017-05-28 31 views
0

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

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); 

      } 

      } 

    }); 


    }} 

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

谢谢

回答

0

试试这个

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

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

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

我不是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); 

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

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

我认为我需要声明一个字符串变量,你怎么看? –

+0

您不需要在SelectServicesActivity.class上声明一个String变量。但在SelectDayActivity.class上,您可以全局声明字符串selected_option。 –

+0

我编译了我的代码,但在第二个活动中未显示所选项目 –

0

我修改这个部分,并增加了吐司来验证所选选项的selected_option:

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); 

问题是,信息不显示。

+0

@ msh.nayan在SelectServicesActivity.class上查找 –

+0

Toast显示正确的选项? –

+0

是的,吐司显示正确的选项 –

相关问题