Действие завершено после смены локали

У меня есть Activity A и звонил с него Activity B. В манифесте Activity A есть configChanges android:configChanges="locale|orientation|screenSize".

В действии A - для изменения локали

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
    Resources res = this.getResources();
    res.updateConfiguration(newConfig, null);
    Intent intent = getIntent();
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    startActivity(intent);
}
  • для начала действия B

    Намерение намерение = новое намерение (это, B.class); startActivity(намерение);

Если я запускаю действие A и меняю локаль, все работает нормально. Но если я попытаюсь запустить действие A, затем запустите действие B, а после этого перейдите к действию A и измените локаль, Activity A will not be restarted, it will be destroyed. Как я могу предотвратить уничтожение Activity A?


person user2017548    schedule 08.08.2013    source источник


Ответы (1)


Добавьте флаг Intent.FLAG_ACTIVITY_REORDER_TO_FRONT к своему намерению. Он переупорядочит существующую активность из стека, если она уже запущена.

person Steve Benett    schedule 08.08.2013
comment
В действии A — для изменения локали @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Ресурсы res = this.getResources(); res.updateConfiguration (newConfig, ноль); Намерение намерение = getIntent(); намерение.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); намерение.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(намерение); } - для запуска Activity B Intentintent = new Intent(this, B.class); startActivity(намерение); - person user2017548; 08.08.2013