【问题标题】:android what to use instead of onRestart() in a fragmentandroid在片段中使用什么代替onRestart()
【发布时间】:2016-01-27 14:04:36
【问题描述】:

我正在处理 view 的 .setVisibility(),在应用启动时的主片段中。 所以我想要的是 view 在应用程序启动时是不可见的(为此我在 onCreateView 中设置了 INVISIBLE)并且当我在应用程序打开时从其他活动返回到我的片段时可见(并且为此,我尝试使用 onRestart() 设置 view VISIBLE 但它无法解析 onRestart 方法) 不推荐使用 onRestart 还是? 谢谢

编辑:对于以下所有建议使用 onResume 的答案(并且谁给出了 -1),onResume 根本不像 onRestart 那样工作,原因是在 onCreateView 之后立即调用。

【问题讨论】:

  • m4tt 我遇到了同样的问题,你得到答案了吗?
  • 已经有一段时间了,但据我记得,正确的答案是对下面回复的编辑,因为他的第一个答案不是重点。我仍然有一个-2,他得到了支持,因为没有人理解这个问题。在我让他注意到之后,他发布了我认为有效的布尔值。

标签: java android lifecycle oncreate


【解决方案1】:

片段没有onRestart()。仅适用于活动。

查看以下片段的生命周期

我想你正在寻找 onResume()


使用布尔标志检查您是否返回到 Fragment:

private boolean firstVisit;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    //other stuff
    firstVisit = true;
}

@Override
public void onResume() {
    //other stuff
    if (firstVisit) {
        //do stuff for first visit only

        firstVisit = false;
    }
}

【讨论】:

  • 问题是 onResume 也在 onCreate() 之后的应用启动时被读取
  • @m4tt 使用 bool 来检查您是否第一次进入其中(后者意味着您正在返回它)
  • @TimCastelijns 好的,所以您的 +2 答案看起来不完整,我的 -1 问题看起来应该到期了,因为我需要的不仅仅是 onResume 来实现 onRestart 结果
【解决方案2】:

如果你想检测片段何时再次可见,你需要使用onResume()回调方法

【讨论】:

  • onResume 根本不像 onRestart 那样工作,原因是在 onCreateView 之后立即调用
【解决方案3】:

如果您想在返回片段时加载内容,可以使用onStart()onResume()

【讨论】:

  • 遗憾片段没有 onrestart
  • onResume 根本不像 onRestart 那样工作,原因是在 onCreateView 之后立即调用
【解决方案4】:

片段生命周期没有onRestart() 方法。您可以根据需要使用onPause()onResume()

延伸阅读:Fragments

【讨论】:

  • onResume 根本不像 onRestart 那样工作,原因是在 onCreateView 之后立即调用
【解决方案5】:

您可以在活动上使用onRestart(),通过使用getFragmentManager().findFragmentById(R.id.your_fragment),使其在片段上调用您想要的任何方法。 当一个片段重新启动时,它的底层活动也会重新启动,因此它的 onRestart() 方法被调用。

【讨论】:

    猜你喜欢
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多