gpt4 book ai didi

java - Activity 之间的切换按钮

转载 作者:行者123 更新时间:2023-12-01 14:07:40 24 4
gpt4 key购买 nike

我正在开发一款游戏,我在设置 Activity 上放置了一个切换按钮,用于关闭和打开游戏 Activity 中的音乐。

这是 Settings.java 文件:

public class Settings extends Activity implements OnCheckedChangeListener{

ToggleButton tbMusic;
boolean music;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);

tbMusic = (ToggleButton)findViewById(R.id.tbMusic);

tbMusic.setOnCheckedChangeListener(this);
}

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(tbMusic.isChecked()) {
music = true;
} else {
music = false;
}
}
}

还有 Game.java 文件(目前我只有这个):

    public class Game extends Activity {

MediaPlayer menuSong;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game);

menuSong = MediaPlayer.create(Menu.this, R.raw.menu);
menuSong.setLooping(true);
menuSong.start();
}


@Override
protected void onStop() {
super.onStop();
menuSong.stop();
}
}

您能否解释一下或举个例子来说明如何在选中 ToggleButton 时关闭游戏中的音乐?

谢谢!

最佳答案

对于您的问题,有很多不同的解决方案。我将给你两个解决方案:

1 - 使用应用程序类。所有应用程序都可以通过这种方式实现应用程序类:

public class ClassName extends Application {
}

它是一个父类(super class),可以使用以下命令从应用程序的任何 Activity 访问该类:

getApplication();

好的,您可以在互联网上阅读有关如何构建此应用程序类的内容。问题的解决方案是在应用程序类中创建一个变量,例如:

public class ClassName extends Application 
{
private boolean isSoundEnabled;

public boolean getSoundEnabled() { return isSoundEnabled; }
public void setSoundEnabled(boolean isEnabled) { isSoundEnabled = isEnabled;}

@Override
public void onCreate() {
super.onCreate();
isSoundEnabled = true;
}

这样,在您的类设置中,您可以设置此变量,如下所示:

 @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(tbMusic.isChecked()) {
getApplication().setSoundEnabled ( true );
} else {
getApplication().setSoundEnabled ( false );
}
}

每次打开类游戏时,您都可以检查此变量的设置方式:

 getApplication().getSoundEnabled();

2 - 对我来说,第二个解决方案更好,因为您将此信息保存在内存中,因此每次用户打开应用程序/游戏时,应用程序都可以记住用户如何设置传递此变量。

这是我们记住标志、设置内容并在关闭和打开应用程序后恢复这些信息的方式。我们将使用 SharedPreferences 对象。它用于在手机内存中保存int、float、boolean等值(简单数据对象)。

因此,在 Settings 类中,每次用户设置声音时,您都可以保存该值:

SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);

if(tbMusic.isChecked()) {
prefs.edit().putBoolean ("IS_ENABLED_VARIABLE", true ).commit();
} else {
prefs.edit().putBoolean ("IS_ENABLED_VARIABLE", false ).commit();
}

在您的 Game 类中,您可以使用以下代码恢复该值:

SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);

boolean isEnabled = prefs.getBoolean("IS_ENABLED_VARIABLE", true);
//The second parameter (true) is the value by default if the variable with the name IS_ENABLED_VARIABLE is not find for the app.

IS_ENABLED_VARIABLE --> 这是变量的名称,您需要使用相同的名称来保存或恢复它。您可以使用任何您想要的名称。

com.example.app --> 这是您调用手机内存中的共享首选项区域/目录的名称。您可以使用您想要的名称。

希望对您有所帮助,如果有帮助,请投票给我!

关于java - Activity 之间的切换按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18767923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com