сохраните вашу переменную в общем предпочтении, затем выполните действие, которое проверяет переменную и устанавливает флаг. затем вы просто расширите это действие на все свои действия.
public class Main2Activity extends AppCompatActivity {
String shared_prefs_name="MY_prefs_name";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(screen_on()){
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}else{
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
public void set_screen_on( boolean screen_on) {
SharedPreferences.Editor saver = getSharedPreferences(shared_prefs_name, MODE_PRIVATE).edit();
saver.putBoolean("screen_on", screen_on);
saver.commit();
if(screen_on)
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}else{
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
public boolean screen_on() {
SharedPreferences prefs = getSharedPreferences(shared_prefs_name, MODE_PRIVATE);
return prefs.getBoolean("screen_on", false);
}
}
Таким образом, вы можете использовать его в своей деятельности вот так.
public class Main3Activity extends Main2Activity {
Switch MySwitch;
TextView MyText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
MySwitch=(Switch)findViewById(R.id.ScreenController);
MyText=(TextView) findViewById(R.id.StatusText);
MySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
set_screen_on(isChecked);
if(isChecked){
String currentText = MySwitch.getText().toString();
MyText.setText(currentText.equals("Screen Light Stays ON") ? "Screen Light Stays OFF" : "Screen Light Stays ON");
MyText.setTextColor(Color.parseColor("#FFEB3B"));
}else{
String currentText = MySwitch.getText().toString();
MyText.setText(currentText.equals("Screen Light Stays OFF") ? "Screen Light Stays ON" : "Screen Light Stays OFF");
MyText.setTextColor(Color.parseColor("#000000"));
}
}
});
if(screen_on())
{
String currentText = MySwitch.getText().toString();
MyText.setText(currentText.equals("Screen Light Stays ON") ? "Screen Light Stays OFF" : "Screen Light Stays ON");
MyText.setTextColor(Color.parseColor("#FFEB3B"));
}else{
String currentText = MySwitch.getText().toString();
MyText.setText(currentText.equals("Screen Light Stays OFF") ? "Screen Light Stays ON" : "Screen Light Stays OFF");
MyText.setTextColor(Color.parseColor("#000000"));
}
}
}
Главное - расширить Main2Activity, чтобы получить доступ в логическое значение screen_on()
и установить с помощью set_screen_on(boolean);