Как изменить тему приложения во время выполнения, используя onCreateView вместо onCreate

Итак, у меня есть этот код прямо сейчас, чтобы изменить тему моего приложения -

public class SettingsActivity extends AppCompatActivity{
public static int themeCheck = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (themeCheck == 1){
        setTheme(R.style.Dark);
    }
    else{
        setTheme(R.style.Light);
    }
    setContentView(R.layout.fragment_settings);
    }
    // some other code changing other stuff

Я работаю над этим проектом с еще одним парнем из моего класса, он делал настоящий скелетный код, и оказалось, что он использовал фрагменты и не распространял действия на AppCompat. Итак, класс, с которым я должен объединить свой код, выглядит примерно так:

public class SettingsFrament extends android.support.v4.app.Fragment 
implements MainActivityFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) {
    View rootView = localInflater.inflate(R.layout.fragment_settings, 
    container, false);
    getActivity().setTitle(getString(R.string.settings_fragment_title));
    return rootView;

//This rootView and other bits that that guy gave me is redirecting the app 
//to my activity from the menu bar that he has.

Я хочу знать, как объединить мой код с этим классом. (Мне НЕ НУЖНО объединять его, я могу написать код, я просто не знаю, как использовать setTheme и другие методы в onCreateView.)

Любая помощь будет оценена по достоинству.


person Yath    schedule 17.04.2017    source источник
comment
Вы пробовали getActivity().setTheme()?, и вам нужно перезапустить действие   -  person ATEF    schedule 17.04.2017
comment
также проверьте это   -  person ATEF    schedule 17.04.2017


Ответы (1)


Попробуйте это внутри обратного вызова onCreateView.

    final Context theme1 = new ContextThemeWrapper(getActivity(), R.style.yourCustomTheme1);
    final Context theme2 = new ContextThemeWrapper(getActivity(), R.style.yourCustomTheme2);

    LayoutInflater localInflater;

    getActivity().setTitle(getString(R.string.settings_fragment_title));

    if (themeCheck == 1){
         localInflater = inflater.cloneInContext(theme1);
    }
    else{
         localInflater = inflater.cloneInContext(theme2);
    }

    View rootView = localInflater.inflate(R.layout.fragment_settings,
            container, false);

    return rootView;
person Harshitha    schedule 17.04.2017