如何使用RadioGroup创建设置面板并保存更改

时间:2013-05-28 20:06:08

标签: android radio-button settings background-color radio-group

在我的Android应用中,有两个带有main.xml和settings.xml的Activity(主要和设置)。我想在设置中创建一个RadioGroup,它像用户的设置面板一样工作,因此他们可以选择Backgroundcolor of Buttons。我正在尝试使用每个RadioButton的onClick,它运行良好,但如果我回到main.xml,颜色不会保存。如何在其他活动中为按钮设置BackgroundColor创建设置面板并保存(或者为用户保存按钮)?

此处,设置'代码:

public class Settings extends Main implements OnCheckedChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.settings);
final Button back;
back= (Button) findViewById(R.id.back);

RadioButton redbtn, blubtn, grebtn;
redbtn= (RadioButton) findViewById(R.id.redbtn);
blubtn= (RadioButton) findViewById(R.id.blubtn);
grebtn= (RadioButton) findViewById(R.id.grebtn);

redbtn.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        back.setBackgroundColor(Color.RED);
        add.setBackgroundColor(Color.RED);
    }
});
back.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        finish();
    }
});
}

@Override
public void onCheckedChanged(RadioGroup arg0, int arg1) {
    // TODO Auto-generated method stub
}   
}

的settings.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
    android:id="@+id/title_settings"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:text="@string/settings"
    android:textSize="40sp" />
<TextView
    android:id="@+id/ButtonSettingsView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/title_settings"
    android:layout_marginTop="17dp"
    android:text="@string/BtnSet"
    android:textSize="30sp" />

<Button
    android:id="@+id/back"
    android:layout_width="70sp"
    android:layout_height="70sp"
    android:layout_alignBaseline="@+id/title_settings"
    android:layout_alignBottom="@+id/title_settings"
    android:layout_alignRight="@+id/ButtonSettingsView"
    android:text="Back"/>

<RadioGroup
    android:id="@+id/ButtonSettings"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/ButtonSettingsView"
    android:layout_marginTop="14dp"
    android:orientation="vertical" >
    <RadioButton
        android:id="@+id/redbtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/red"/>
    <RadioButton
        android:id="@+id/blubtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/blue"  />
    <RadioButton
        android:id="@+id/grebtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/grey"/>
</RadioGroup>
</RelativeLayout>

由于

1 个答案:

答案 0 :(得分:0)

当然它不会为其他Activities保存它,因为当你启动另一个Activity时,Activities将使用xml中的默认值。您需要以某种方式保存颜色,然后在其他Activites中引用它。实现此目的的一种方法是,如果您希望在用户离开并重新启动应用程序时保留它,则使用SharedPreferences。然后,您可以在其他static中打开这些首选项,保存值,并相应地更改背景。

如果您只希望它更改用户当前在应用程序中的时间的颜色,那么您可以创建一个{{1}}类来存储此变量并根据该值更改颜色。