Android выполняет переход при выполнении операции воссоздать ()

Я хотел бы после смены темы установить переход для Activity Recreate (), возможно ли это?

Я пробовал: @android: anim / fade_in @android: anim / fade_out, но это не сработало, и это также повлияет на переход, когда я открываю и закрываю активность, но я не хочу этого


person 4face    schedule 08.02.2017    source источник


Ответы (3)


Чтобы «сохранить состояние», используя ответ @ Arunava, сделайте это

    Activity mCurrentActivity = getActivity();
    Intent intent = getActivity().getIntent();
    Bundle tempBundle = new Bundle();
    intent.putExtra("bundle", tempBundle);

    mCurrentActivity.finish();
    mCurrentActivity.overridePendingTransition(R.anim.transition_for_incoming_activity, R.anim.transition_for_outgoing_activity);
    mCurrentActivity.startActivity(intent);

а затем сделайте это в своем Activity onCreate

    @Override
    protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
    if (getIntent().hasExtra("bundle")){
        //Insert a method to display the activity or fragment that triggered the activity to restart
    }
    super.onResume();
}
person Yaro    schedule 24.09.2019

Завершая ответ @Yaro,

Внутри onCreate, если savedInstanceState имеет значение null, попробуйте дополнительные функции намерения. Состояние представлений будет правильно восстановлено, только если вы вызовете super.onCreate с пакетом.

public class ExampleActivity extends Activity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        //setTheme(whatever);
        super.onCreate(savedInstanceState != null ? savedInstanceState : getIntent().getBundleExtra("saved_state"));
    }

    protected void transitionRecreate(){
        Bundle bundle = new Bundle();
        onSaveInstanceState(bundle);
        Intent intent = new Intent(this, getClass());
        intent.putExtra("saved_state", bundle);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    }

}

У меня сработало, можно использовать finish() вместо флага CLEAR_TOP

person chevreto    schedule 08.08.2020

Ну, вы можете использовать это вместо воссоздания ()

Activity mCurrentActivity = getActivity();
...
mCurrentActivity.finish();
mCurrentActivity.overridePendingTransition(R.anim.transition_for_incoming_activity, R.anim.transition_for_outgoing_activity);
mCurrentActivity.startActivity(mCurrentActivity.getIntent());
person Arunava    schedule 20.02.2017
comment
это не спасет instanceState - person orium; 18.04.2017