Я пытаюсь воссоздать фрагмент и действие после изменения языковых настроек в моем приложении, но часть getActivity().recreate();
выдает ошибки, почему я не могу понять, почему. Ошибка:
E/ActivityInjector: get life cycle exception
Ошибка возникает, когда я пытаюсь воссоздать действие. Вот код в моем SettingsActivity.java
:
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
getSupportFragmentManager().beginTransaction().replace(R.id.settings, new SettingsFragment()).commit();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public static class SettingsFragment extends PreferenceFragmentCompat {
ListPreference languages;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
languages = getPreferenceManager().findPreference("language");
languages.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean anyChanges=false;
if (newValue.toString().equals("turkish")) {
LocaleHelper.setLocale(getContext(),"tr-rTR");
anyChanges = true;
}
if (newValue.toString().equals("english")){
LocaleHelper.setLocale(getContext(),"en");
anyChanges = true;
}
if (anyChanges){
getActivity().recreate();
}
return true;
}
}
);
return super.onCreateView(inflater, container, savedInstanceState);
}
}