我有一个带有按钮的 fragment ,可以为整个应用程序设置背景主题。我已经设置了一个界面,以便 fragment 可以告诉主要 Activity 设置背景或删除背景,具体取决于用户单击的按钮。
问题是每次打开应用程序时,背景都不会保存,需要再次切换。我已经看到这可以通过 SharedPreferences 解决,但在这里实现它让我感到困惑
在我的 fragment 中这显示了两个按钮,将值 1 或 2 发送到主 Activity 以切换背景
enable = (Button) rootView.findViewById(R.id.enable);
enable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.themechanged(2);
enable.setVisibility(View.GONE);
disable.setVisibility(View.VISIBLE);
}
});
disable = (Button) rootView.findViewById(R.id.disable);
disable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.themechanged(1);
disable.setVisibility(View.GONE);
enable.setVisibility(View.VISIBLE);
}
});
在我的主要 Activity 中这从监听器获取值并根据该值切换背景
@Override
public void themechanged(int value) {
if(value==2) {
if (isDarkTheme) {
appbackground.setVisibility(View.GONE);
shade.setVisibility(View.GONE);
} else {
appbackground.setVisibility(View.VISIBLE);
shade.setVisibility(View.VISIBLE);
}
}else if(value!=2||value==1){
appbackground.setVisibility(View.GONE);
shade.setVisibility(View.GONE);
}
}
最佳答案
使用SharedPrefence
来存储主题的值,例如-:
全局变量
SharedPreferences pref;
SharedPreferences.Editor editor;
在OnCreateView()中
pref = getActivity().getSharedPreferences("Theme", Context.MODE_PRIVATE);
editor = pref.edit();
现在,在按钮
点击上存储首选项
enable = (Button) rootView.findViewById(R.id.enable);
enable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editor.putInt("yourTheme", 2);
editor.commit();
listener.themechanged(2);
enable.setVisibility(View.GONE);
disable.setVisibility(View.VISIBLE);
}
});
disable = (Button) rootView.findViewById(R.id.disable);
disable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editor.putInt("yourTheme", 1);
editor.commit();
listener.themechanged(1);
disable.setVisibility(View.GONE);
enable.setVisibility(View.VISIBLE);
}
});
然后,在MainActivity的OnCreate()中,您可以检查如下
SharedPreferences pref = getSharedPreferences("Theme", MODE_PRIVATE);
value= pref.getInt("yourTheme", 1);//1 is default value
if(value==2) {
if (isDarkTheme) {
appbackground.setVisibility(View.GONE);
shade.setVisibility(View.GONE);
} else {
appbackground.setVisibility(View.VISIBLE);
shade.setVisibility(View.VISIBLE);
}
}else if(value==1){
appbackground.setVisibility(View.GONE);
shade.setVisibility(View.GONE);
}
完成,可能会有帮助
关于java - 如何在 SharedPreferences 中保存我的应用程序背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46689300/