将单选按钮的值传递给其他有意图的活动?

时间:2012-11-22 23:59:26

标签: android android-intent radio-button radio-group

快速提问。我如何使用intent将已检查的单选按钮值传递给其他活动?我是否还需要使用共享首选项来保存值?

我想做一些类似“当用户选择单选按钮(例如:红色,蓝色,绿色,黄色)时,所有活动都会更改textview的颜色。

public class Text_Colour extends Activity implements RadioGroup.OnCheckedChangeListener {

RadioButton rb1, rb2, rb3, rb4;
TextView tv2;
RadioGroup rg1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.colours);

    tv2 = (TextView)findViewById(R.id.textview2);
    rb1 = (RadioButton) findViewById(R.id.radioButton1);
    rb2 = (RadioButton) findViewById(R.id.radioButton2);
    rb3 = (RadioButton) findViewById(R.id.radioButton3);
    rb4 = (RadioButton) findViewById(R.id.radioButton4);
    rg1 = (RadioGroup) findViewById(R.id.radiogroup1);
    rg1.setOnCheckedChangeListener(this);

}

public void onCheckedChanged(RadioGroup rg1, int r) {

    // TODO Auto-generated method stub
    if (r==rb1.getId()) {
        tv2.setTextColor(Color.RED); 
    } 
    if (r==rb2.getId()) {
        tv2.setTextColor(Color.YELLOW); 
    } 
    if (r==rb3.getId()) {
        tv2.setTextColor(Color.GREEN); 
    } 
    if (r==rb4.getId()) {
        tv2.setTextColor(Color.BLUE); 
    } 

    else {
        tv2.setTextColor(Color.BLACK);
    }

}

}

谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

如果您正在讨论其中的一个应用程序和活动,那么我建议您使用SharedPreferences。 以下是您需要做的事情:

  1. 更改radiobutton值时,请将其保存在共享首选项中。
  2. 让您的所有活动都在监听SharedPreferences中的更改。在这种情况下,只要您更改颜色,就会通知所有正在运行的活动,以便他们更新其UI。只需使用SharedPreferences.registerOnSharedPreferenceChangeListener()方法。
  3. 每个活动的
  4. onCreate都需要从共享首选项中读取颜色值并执行必要的UI工作。 完成!

答案 1 :(得分:1)

如果您希望单选按钮选择中的更改将更新所有TextViews在所有活动中的文本颜色,即使是正在运行的活动,也应使用存储颜色的全局变量。以下是在Android中创建类似全局变量的nice example,可供所有应用程序组件使用。