首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android在activity recreate()上进行转换

Android在activity recreate()上进行转换
EN

Stack Overflow用户
提问于 2017-02-09 02:03:52
回答 3查看 4.3K关注 0票数 24

我想在更改主题后转换activity recreate(),可以吗?

我尝试过:@android:anim/fade_in @android:anim/fade_out,但它不起作用,这也会影响我打开和关闭activity时的过渡,但我不想这样

EN

回答 3

Stack Overflow用户

发布于 2019-09-25 01:36:00

要使用@Arunava的答案“保存状态”,请执行以下操作

代码语言:javascript
复制
    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);

然后在您的活动的onCreate中执行此操作

代码语言:javascript
复制
    @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();
}
票数 1
EN

Stack Overflow用户

发布于 2020-08-08 17:08:21

完成@Yaro的回答,

onCreate中,如果savedInstanceState为null,请尝试使用intent附加参数。只有在使用捆绑包调用super.onCreate时,视图的状态才能正确恢复。

代码语言:javascript
复制
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标志

票数 1
EN

Stack Overflow用户

发布于 2017-02-20 11:47:26

您可以使用它而不是recreate()

代码语言:javascript
复制
Activity mCurrentActivity = getActivity();
...
mCurrentActivity.finish();
mCurrentActivity.overridePendingTransition(R.anim.transition_for_incoming_activity, R.anim.transition_for_outgoing_activity);
mCurrentActivity.startActivity(mCurrentActivity.getIntent());
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42120440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档