Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改应用程序设置中的主题_Java_Android_Settings_Oncreate_Onpause - Fatal编程技术网

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);