【问题标题】:How to call recreate()?如何调用 recreate()?
【发布时间】:2015-04-18 21:04:14
【问题描述】:

我知道这可能非常简单,但我就是想不通。

我正在尝试在操作后重新加载/重新创建活动。我知道我可以使用:

Intent intent = getIntent();
finish();
startActivity(intent);

但是在阅读网站上的答案时,我被告知在 11 api 之后使用“recreate()”。任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    虽然使用recreate 方法的工作原理是

    this.recreate()
    

    它仅在 API 级别 11 中添加。如果您想包含更多设备,您可以检查 API 级别并实现重新创建方法以及

    Intent intent = getIntent();
    finish();
    startActivity(intent);
    

    您可以通过像...这样的 if 语句来使用两者

    if (android.os.Build.VERSION.SDK_INT >= 11) {
        //Code for recreate
        recreate();
    } else {
        //Code for Intent
        Intent intent = getIntent();
        finish();
        startActivity(intent);
    }
    

    【讨论】:

    • 上面的相同评论 - 非常简单,非常感谢!也感谢您的额外解释和检查(在我的项目中专门雇用您)。
    • 我正在线程中执行一些任务。我不能调用 recreate() 方法?
    • 不完全确定您的意思?你试过 mContext.recreate() 吗?
    • 如何在没有保存状态的情况下重新创建应用程序? .例如:用户选择日期(游戏级别) -> 将其保存到 SharedPref -> 根据更新的 SF 值重新创建活动,消除旧状态。 (将创建新问题,但我担心我会反弹这个或类似的线程)
    【解决方案2】:

    this.recreate() 就是它所需要的。将该代码粘贴在您要重新加载的活动中的方法中。我有一个项目,它与单击按钮相关联,但您可以根据需要使用它。

    【讨论】:

      【解决方案3】:

      我对你的问题有点困惑,你自己在回答中回答了这个问题。直接调用方法recreate...

      来自recreate()的文档:

      使用新实例重新创建此 Activity。这导致与由于配置更改而创建 Activity 时的流程基本相同——当前实例将经历其生命周期到 onDestroy() 并在其后创建一个新实例。

      从活动代码中调用recreate(),而不是

      Intent intent = getIntent();
      finish();
      startActivity(intent);
      

      重新启动活动(在 API 11 之后)。

      请参阅this 答案以获取更通用的重新创建例程,该例程甚至适用于 API/SDK 11 之前。

      【讨论】:

      • 感谢 CPU!只是想开始更新我的项目。由于某种原因,我被“这个”抛弃了。
      猜你喜欢
      • 2016-10-16
      • 2021-09-09
      • 2021-10-02
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多