Как сделать переключатель, чтобы переключить настройки веб-просмотра? - PullRequest
0 голосов
/ 03 марта 2020

Я делаю приложение Android для интернет-газеты.

Недавно я узнал о темном режиме Android Webview предлагает Android 10, и я внедрил его в свое приложение.

Проблема здесь в том, что настройка веб-просмотра определяется темным режимом системы, а не переключателем.

Мне нужно найти способ сделать switch1 в SwitchActivity. java переключить настройку темного веб-просмотра на MainActivity. java.

По какой-то причине темный переключатель уже работает на страница, на которой включен коммутатор (SwitchActivity. java). Это происходит путем переключения темы страницы на темную тему, но переключение темы не принесет мне пользы в основной деятельности, мне нужно переключить флаг темноты.

MainActivity. java (Страница веб-просмотра, которую я хочу затемнить с помощью переключателя)

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

//initializing WebView
private WebView mwebView;

private static final String PREFS_NAME = "prefs";
private static final String PREF_DARK_THEME = "dark_theme";

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DrawerLayout drawer = findViewById(R.id.drawer_layout);

    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    toggle.syncState();

    NavigationView navigationView = findViewById(R.id.nav_view);

    navigationView.setNavigationItemSelectedListener(this);


    //WebView
    mwebView = findViewById(R.id.myWebView);
    WebSettings webSettings = mwebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mwebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    mwebView.getSettings().setAppCacheEnabled(true);
    mwebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    webSettings.setDomStorageEnabled(true);
    webSettings.setUseWideViewPort(true);
    webSettings.setSaveFormData(true);
    mwebView.setWebViewClient(new WebViewBlocker());
    int nightModeFlags = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;

    if (nightModeFlags ==Configuration.UI_MODE_NIGHT_YES)
        webSettings.setForceDark(WebSettings.FORCE_DARK_ON); **//the switch would have to toggle this**

    mwebView.setWebViewClient(new WebViewBlocker());
    mwebView.loadUrl("https://www.mywebsite.com");
}

Content_Main_Settings. xml (Где находится переключатель)

<Switch
    android:id="@+id/switch1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:switchMinWidth="56dp"
    android:layout_marginLeft="100dp"
    android:layout_marginTop="120dp"
    android:text="Switch1:"
    android:checked="true"
    android:textOff="OFF"
    android:textOn="ON"/>
<Switch
    android:id="@+id/switch2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:switchMinWidth="56dp"
    android:layout_below="@+id/switch1"
    android:layout_alignLeft="@+id/switch1"
    android:text="Switch2:"
    android:textOff="OFF"
    android:textOn ="ON"/>
<Button
    android:id="@+id/getBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="150dp"
    android:layout_marginTop="200dp"
    android:text="Get" />

SwitchActivity. java (страница, на которой включен переключатель, уже темнеет)

public class SwitchActivity extends AppCompatActivity {

private static final String PREFS_NAME = "prefs";
private static final String PREF_DARK_THEME = "dark_theme";

@Override
protected void onCreate(Bundle savedInstanceState) {
    // Use the chosen theme
    SharedPreferences preferences = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
    boolean useDarkTheme = preferences.getBoolean(PREF_DARK_THEME, false);

    if(useDarkTheme) {
        setTheme(R.style.AppTheme_Dark_NoActionBar);
    }

    super.onCreate(savedInstanceState);
    setContentView(R.layout.content_main_settings);

    Switch toggledark = (Switch) findViewById(R.id.switch1);
    toggledark.setChecked(useDarkTheme);
    toggledark.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton view, boolean isChecked) {
            toggleTheme(isChecked);
        }
    });
}

private void toggleTheme(boolean darkTheme) {
    SharedPreferences.Editor editor = getSharedPreferences(PREFS_NAME, MODE_PRIVATE).edit();
    editor.putBoolean(PREF_DARK_THEME, darkTheme);
    editor.apply();

    Intent intent = getIntent();
    finish();

    startActivity(intent);
}
...