gpt4 book ai didi

java - 背景音乐和共同喜好

转载 作者:太空宇宙 更新时间:2023-11-04 14:42:09 25 4
gpt4 key购买 nike

我想使用设置来打开和关闭背景音乐,这是一个 Activity ,可以通过在主 Activity 中按菜单按钮并选择“设置”来启动它。我现在面临的问题是,当我勾选背景音乐复选框时,单击“保存”并返回到主要 Activity 后,我的音乐停止播放。如何确保返回主要 Activity 后音乐继续播放?当我停止应用程序并重新启动 Activity 时,我希望设置保持选择的方式(使用共享首选项)。任何人都可以看一下我的代码并看看我做错了什么吗?

我的MainActivity.java

package sp.com;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.Button;
import android.widget.TextView;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import android.app.TabActivity;
import android.widget.TabHost;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.content.Context;
import android.database.Cursor;
import android.support.v4.widget.CursorAdapter;
import android.media.MediaPlayer;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.view.KeyEvent;

public class MainActivity extends Activity {

Button button;


@Override
public void onCreate(Bundle savedInstanceState) {

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


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;

}

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.setting:
Intent intent = new Intent(MainActivity.this, Settings.class);
startActivity(intent);

break;

}
return super.onOptionsItemSelected(item);
}


}

我的设置.java

package sp.com;

import android.app.Activity;
import android.content.SharedPreferences;
import android.view.View.OnClickListener;

import android.content.SharedPreferences.Editor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;

public class Settings extends Activity implements OnClickListener {
CheckBox Backmusic;
Button button1;
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.xml.preferences);
Backmusic = (CheckBox) findViewById(R.id.backmusic);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(this);
loadSavedPreferences();
}
private void loadSavedPreferences(){
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
boolean checkBoxValue = sharedPreferences.getBoolean("CheckBox_Value",false);
if (checkBoxValue){
Backmusic.setChecked(true);
} else {
Backmusic.setChecked(false);
}
}

private void savePreferences(String key, boolean value){
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putBoolean(key, value);
editor.commit();
}

@Override
public void onClick(View v){
savePreferences("CheckBox_Value",Backmusic.isChecked());
if (Backmusic.isChecked()){
mp = MediaPlayer.create(getBaseContext(), R.raw.sound);
mp.start();
} else {

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

}

提前致谢。

最佳答案

所以现在您只是在“设置” Activity 中播放音乐。事实上,您正在 onStop() 中调用 mp.stop()。这就是为什么当它关闭时音乐就会停止。

您还应该将代码放入 MainActivityonCreate()onResume() 中,以从共享首选项中读取以及背景音乐是​​否为真的,播放音乐。这可能看起来像这样:

SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
boolean backgroundMusic = sp.getBoolean("CheckBox_Value",false);
if (backgroundMusic)
{
MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.raw.sound);
mp.start();
}
else
{
mp.stop();
}

请注意,您现在需要使用 getApplicationContext() 而不是 this 写入 Settings 中的 SharedPreferences >。这样,首选项将保存在整个应用程序中,而不仅仅是一个 Activity 。

关于java - 背景音乐和共同喜好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24825594/

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