gpt4 book ai didi

java - 从 Android 中的偏好 Activity 更改 mainactivity 内部布局背景

转载 作者:太空宇宙 更新时间:2023-11-04 13:51:17 25 4
gpt4 key购买 nike

我有一个偏好 Activity 。在此 Activity 中,我希望能够更改主 Activity 中其中一个布局的背景颜色。

现在,当我尝试使用带有背景颜色更改的“if”循环运行设置 Activity 时,应用程序崩溃了。

打开设置 Activity 的点击监听器:

        settings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intentPreferences = new Intent(getApplicationContext(),
SettingsActivity.class);
startActivity(intentPreferences);

//startActivityForResult(intentPreferences);
}
});

首选项屏幕布局:

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

<SwitchPreference
android:key="pref_sync"
android:id="@+id/prefSwitch"
android:defaultValue="false"
android:title="You want a yellow or white background?"
/>

</PreferenceScreen>

我的偏好 Activity :

public class SettingsActivity extends PreferenceActivity {

private static final boolean ALWAYS_SIMPLE_PREFS = false;
private SwitchPreference settingsSwitch;

@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
PreferenceManager mPreferenceManager = getPreferenceManager();
RelativeLayout rl = (RelativeLayout) findViewById(R.id.newdeliverylayout);
if (mPreferenceManager.getSharedPreferences().getBoolean("pref_sync", true)){
rl.setBackgroundColor(Color.YELLOW);
} else{
rl.setBackgroundColor(Color.WHITE);
}

}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
}

}

如果我注释掉 if 循环中的 rl.setBackgroundColor 行,首选项屏幕会正常打开

最佳答案

您可以这样做,以便每次加载主要 Activity 时,它都会检查共享首选项并将颜色加载到首选项中的内容。如果首选项为空,那么只需将其设置为默认颜色?

例如,您可以像这样设置颜色。 (我只是输入了十六进制颜色引用,但您可以将其更改为您想要的任何内容。

public void setBackgroundColor() {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("color", "#FFFFFF");
editor.commit()
}

然后在主 Activity 中确保每次加载/重新加载时都调用此方法

public void getBackgroundColor() {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
if (sharedPreferences.contains("color")) {
String myColor = sharedPreferences.getString("color", null);
mybackground.setBackgroundColor(Color.parseColor(myColor));
}
}

关于java - 从 Android 中的偏好 Activity 更改 mainactivity 内部布局背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30245923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com