Получение исключения жизненного цикла при воссоздании действия - PullRequest
2 голосов
/ 01 августа 2020

Я пытаюсь воссоздать фрагмент и действие после изменения языковых настроек в моем приложении, но часть 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);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...