0

在我的 Android 应用程序中,有两个带有 main.xml 和 settings.xml 的 Activity(主要和设置)。我想在设置中创建一个 RadioGroup,它的作用类似于用户的设置面板,以便他们可以选择按钮的背景颜色。我正在尝试将 onClick 与每个 RadioButton 一起使用,并且效果很好,但是如果我回到 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
}   
}

设置.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>

谢谢

4

1 回答 1

0

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

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

于 2013-05-28T20:13:05.703 回答