Я делаю приложение 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);
}