Глобальные переменные и 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 проблемы:

  1. Это логическое значение не сохраняет свое состояние на протяжении всего приложения.
  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;
    }
    }

0 ответов

Другие вопросы по тегам