Java 如何更改应用程序设置中的主题
我正在开发一个应用程序,我希望用户能够从设置中的颜色选项列表中进行选择(所有代码如下所示)。但是,当他们这样做时,设置活动后不会更改。当你离开活动(比如说回家)并回来时,它会发生变化。我相信这是因为没有调用Java 如何更改应用程序设置中的主题,java,android,settings,oncreate,onpause,Java,Android,Settings,Oncreate,Onpause,我正在开发一个应用程序,我希望用户能够从设置中的颜色选项列表中进行选择(所有代码如下所示)。但是,当他们这样做时,设置活动后不会更改。当你离开活动(比如说回家)并回来时,它会发生变化。我相信这是因为没有调用onCreate(),问题是如果我再次调用setContentView(),整个应用程序都没有响应。如果我执行了recreate(),它会因为音乐播放器而崩溃(同样是下面的代码)。请留下一个答案,即使你只是认为它会起作用。提前谢谢 代码: SettingsActivity.java(也无法更改
onCreate()
,问题是如果我再次调用setContentView
(),整个应用程序都没有响应。如果我执行了recreate()
,它会因为音乐播放器而崩溃(同样是下面的代码)。请留下一个答案,即使你只是认为它会起作用。提前谢谢
代码:
SettingsActivity.java(也无法更改此项的栏)
代码:
MainActivity.java
onCreate()
setTheme()
onResume()
onPause()
BackgroundMusicLayer.java
public class BackgroundMusicPlayer extends AsyncTask<Context, Void, Void>{
MediaPlayer player;
@Override
protected Void doInBackground(Context... params) {
player = MediaPlayer.create(params[0], R.raw.background);
player.setLooping(true);
player.setVolume(50,50);
player.start();
return null;
}
public void cancelMusic(){
player.stop();
player.reset();
player.release();
}
}
公共类背景MusicLayer扩展异步任务{
媒体播放器;
@凌驾
受保护的Void doInBackground(上下文…参数){
player=MediaPlayer.create(参数[0],R.raw.background);
player.setLooping(true);
player.setVolume(50,50);
player.start();
返回null;
}
公共音乐{
player.stop();
player.reset();
player.release();
}
}
只需更换finish()代码>带有
Intent home = new Intent(getApplicationContext(), MainActivity.class);
startActivity(home);
非常感谢你阅读我的问题
private void mySetTheme(){
themeName = settings.getString("theme", "DarkBlue");
int theme = MyThemer.getThemeid(themeName);
setTheme(theme);
if(Build.VERSION.SDK_INT > 20){
int themeDark = MyThemer.getColorPrimaryDark(themeName);
getWindow().setStatusBarColor(getResources().getColor(themeDark));
}
}
public void onResume(){
super.onResume();
playMusic = settings.getBoolean("playMusic", true);
if(playMusic){
backgroundMusicPlayer = new BackgroundMusicPlayer();
backgroundMusicPlayer.execute(getApplicationContext());
}
}
public void onPause(){
super.onPause();
if(playMusic){
backgroundMusicPlayer.cancelMusic();
backgroundMusicPlayer.cancel(true);
}
}
public class BackgroundMusicPlayer extends AsyncTask<Context, Void, Void>{
MediaPlayer player;
@Override
protected Void doInBackground(Context... params) {
player = MediaPlayer.create(params[0], R.raw.background);
player.setLooping(true);
player.setVolume(50,50);
player.start();
return null;
}
public void cancelMusic(){
player.stop();
player.reset();
player.release();
}
}
Intent home = new Intent(getApplicationContext(), MainActivity.class);
startActivity(home);