Глобальные переменные и DarkMode
Я пытаюсь сделать Global Variable
сделать темный режим для всего моего app
, Но похоже, что это не работает.
Я уже следовал руководству, чтобы сделать Global Variable
, Вот что у меня так далеко:
GolobalVariables appState;
appState = ((GolobalVariables) this.getApplication());
А это мой on touch event
это работает:
@Override
public void onLongPress(MotionEvent e) {
mScrollView.post(new Runnable() {
@Override
public void run() {
darkMode();
appState.setDarkModeOn(!appState.isDarkModeOn());
}
});
}
Здесь darkMode method
:
private void darkMode() {
Log.d("DarkMode", "`" + appState.isDarkModeOn());
if(appState.isDarkModeOn()) {
maarivRelativeLayout.setBackgroundColor(Color.parseColor("#333333"));
for (int i = 0; i < maarivLinearLayout.getChildCount(); i++) {
((TextView) maarivLinearLayout.getChildAt(i)).setTextColor(Color.parseColor("#FFFFFF"));
}
} else {
maarivRelativeLayout.setBackgroundColor(Color.parseColor("#FFFFFF"));
for (int i = 0; i < maarivLinearLayout.getChildCount(); i++) {
((TextView) maarivLinearLayout.getChildAt(i)).setTextColor(Color.parseColor("#333333"));
}
}
}
Я меняю состояние boolean
так что при переключении активности переменная остается прежней. Только когда пользователь долго нажимает на экран, он переключается.
Возникают 2 проблемы:
- Это логическое значение не сохраняет свое состояние на протяжении всего приложения.
При закрытии и повторном открытии одного и того же действия в журнале будет указано "ложь" при открытии и ложь снова при длительном нажатии. правда и правда.
Вот мой манифест
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Davening"/> <activity android:name=".Benching"/> <activity android:name=".Zmanim"/> <activity android:name=".Extras"></activity> <activity android:name=".Shacharis"></activity> <activity android:name=".Mincha"></activity> <activity android:name=".Maariv"></activity> <activity android:name=".Compass"></activity> <activity android:name=".TestingZone"></activity> <!--Camera--> <activity android:name=".CameraView" android:label="@string/app_name" android:screenOrientation="portrait"> <!-- configure this activity to use landscape orientation --> </activity> <!--<application android:theme="@style/Theme.AppCompat.Light.NoActionBar" />--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera2" /> <uses-feature android:name="android.hardware.camera.autofocus" /><!-- ATTENTION: This was auto-generated to add Google Play services to your project for
Индексирование приложений. См. https://g.co/AppIndexing/AndroidStudio для получения дополнительной информации. ->
А вот мой класс переменных Golbal:
package com.example.edonfreiner.siddur;
import android.app.Application;
public class GolobalVariables extends Application{
public boolean darkModeOn = false;
public boolean isDarkModeOn() {
return darkModeOn;
}
public void setDarkModeOn(boolean darkModeOn) {
this.darkModeOn = darkModeOn;
}
}