Как вы можете видеть в этом сообщении, невозможно установить целую тему приложения, как вы ожидаете. Но вы можете установить тему в настройке Activity, используя объект SharedPreference, и применить свою тему в каждой активности, которую вы хотите:
//A method that return your styles id
int style_var=getStyle();
SharedPreferences.Editor editor
=getSharedPreferences("mypref",
MODE_PRIVATE).edit();
editor.putInt("idName", style_var);
editor.apply();
И в Any Activity реализуйте этот фрагмент кода перед super.onCreate (saveInstanceState):
SharedPreferences prefs =
getSharedPreferences("mypref",
MODE_PRIVATE);
int styleId = prefs.getInt("idName",
R.style.defaultStyle);
//set Activity theme
setTheme(styleId);
Обновление: И чтобы избежать дублирования кода, создайте пользовательский класс действий, подобный этому:
public class myBaseActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState)
{
SharedPreferences prefs =
getSharedPreferences("mypref",MODE_PRIVATE);
int styleId = prefs.getInt("idName",R.style.AppTheme);
//set Activity theme
setTheme(styleId);
super.onCreate(savedInstanceState);
}
}
, и вместо этого просто расширьте свои действия из пользовательского действияиз Activity:
public class AnyActivity extends
myBaseActivity{
@Override
public void onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.any);
}
}
и, наконец, в настройках Activity внедрите этот фрагмент кода для перезагрузки приложения (например, поместите его в метод Onclick кнопки «Сохранить и перезагрузить»):
Intent intent = new Intent(SettingActivityClass.this, YourAppMainActivity.class);
//replace YourAppMainActivity with SettingActivityClass if you want to stay in setting activity on reload
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Надеюсь, это поможет.