#android #android-studio #sharedpreferences #android-color
#Android #android-studio #общие настройки #android-color
Вопрос:
// моя программа работает нормально, ошибок нет, также цвет работает нормально при изменении цвета панелей инструментов. но sharedpreferences не работает для цвета, он не может сохранить измененный цвет. после изменения цвета панели инструментов, когда я снова перезапускаю приложение после его закрытия. он начинается с цвета по умолчанию, я не могу сохранить, используя общие настройки.//
public class MainActivity extends AppCompatActivity {
Toolbar mtoolbar;
Button mredcolour;
Button mgreencolour;
Button myellowcolour;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mtoolbar =(Toolbar) findViewById(R.id.toolbar2);
mredcolour=(Button) findViewById(R.id.button);
mgreencolour=(Button) findViewById(R.id.button2);
myellowcolour=(Button) findViewById(R.id.button3);
if(getcolour()!=getResources().getColor(R.color.colorPrimary)){
mtoolbar.setBackgroundColor(getcolour());
getWindow().setStatusBarColor(getcolour() );
}
mredcolour.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
mtoolbar.setBackgroundColor(getResources().getColor(R.color.colorred));
getWindow().setStatusBarColor(getResources().getColor(R.color.colorred));
storecoloru(getResources().getColor(R.color.colorred));
}
});
mgreencolour.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
mtoolbar.setBackgroundColor(getResources().getColor(R.color.colorgreen));
getWindow().setStatusBarColor(getResources().getColor(R.color.colorgreen));
storecoloru(getResources().getColor(R.color.colorgreen));
}
});
myellowcolour.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
mtoolbar.setBackgroundColor(getResources().getColor(R.color.coloryellow));
getWindow().setStatusBarColor(getResources().getColor(R.color.coloryellow));
storecoloru(getResources().getColor(R.color.coloryellow));
}
});
}
private void storecoloru(int color){
SharedPreferences msharedpreferences =getSharedPreferences("toolbarcolour",MODE_PRIVATE);
SharedPreferences.Editor meditor=msharedpreferences.edit();
meditor.putInt("color",color );
meditor.apply();
}
private int getcolour(){
SharedPreferences msharedpreferences= getSharedPreferences("toolbarcolour",MODE_PRIVATE );
int selectedcolour=msharedpreferences.getInt("colour",getResources().getColor(R.color.colorPrimary) );
return selectedcolour;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.v7.widget.Toolbar
android:id="@ id/toolbar2"
android:layout_width="368dp"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="0dp"
tools:ignore="MissingConstraints" />
<Button
android:id="@ id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="26dp"
tools:layout_editor_absoluteY="287dp" />
<Button
android:id="@ id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="362dp" />
<Button
android:id="@ id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="464dp" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
<color name="colorred">#ff0000</color>
<color name="colorgreen">#008000</color>
<color name="coloryellow">#ffff00</color>
</resources>
Ответ №1:
Вы используете другой ключ для получения цвета
int selectedcolour=msharedpreferences.getInt("colour",getResources().getColor(R.color.colorPrimary) );
Вы используете color
при сохранении в общих настройках и colour
при извлечении. Если это ошибка при вводе кода в stackoverflow, нам понадобится дополнительная информация для решения вашей проблемы.