我在MainActivity类的onCreate方法中定义了一个boolean switchPref。它是一个用于设置声音的变量,一个名为SettingsActivity的另一个类的公共静态变量。 switchPref的默认值默认为false。 是否有可能同一个包中的GameActivity类的onCreate方法可以在用户之后访问此布尔值。
public class MainActivity extends AppCompatActivity {
Button btnPlay;
public static Boolean switchPref;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
// Read settings
SharedPreferences sharedPref =
PreferenceManager.getDefaultSharedPreferences(this);
Boolean switchPref = sharedPref.getBoolean
(SettingsActivity.KEY_SOUND_SWITCH, false);
Toast.makeText(this, switchPref.toString(), Toast.LENGTH_SHORT).show();
定义字符串值KEY_SOUND_SWITCH
的SettingsActivitypublic class SettingsActivity extends AppCompatActivity {
public static final String KEY_SOUND_SWITCH = "sound_switch";
在同一个包的另一个活动GameActivity中,我想访问onCreate方法的sharedPref,
Boolean switchPref = sharedPref.getBoolean
(SettingsActivity.KEY_SOUND_SWITCH, false);
并执行以下操作以确保MainActivity和GameActivity都访问相同的布尔值。 如果Main中的boolean switchPref为false,则Main和Game中的声音都被禁用。 如果Main中的boolean switchPref为true,则启用Main和Game活动中的声音。
public class GameActivity extends AppCompatActivity {
Button btnTry;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
btnTry=(Button) findViewById(R.id.btnTry);
final MediaPlayer mp01 =MediaPlayer.create(this,R.raw.black);
btnTry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
**if the boolean switchPref variable in MainActivity is true, then play the sound mp01** {
mp01.start();}
}
});
}
}