首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fragment.onstart在Activity.onstart之前被调用

Fragment.onstart在Activity.onstart之前被调用
EN

Stack Overflow用户
提问于 2016-06-22 07:45:59
回答 3查看 1.9K关注 0票数 2
代码语言:javascript
复制
MMuzammil: MainActivity:in onCreate
MMuzammil: FirstFragment:in onAttach
MMuzammil: FirstFragment:in onCreate
MMuzammil: FirstFragment:in onCreateView
MMuzammil: FirstFragment:in onActivityCreated
MMuzammil: FirstFragment:in onStart <----
MMuzammil: MainActivity:in onStart <----
MMuzammil: MainActivity:in onResume
MMuzammil: FirstFragment:in onResume

如我们所见,我的Fragment.onStart是在Activity.onStart之前被调用的。有人知道这种行为的原因是什么吗?因为当活动转移到前台时,活动的回调方法应该总是首先调用

活性:

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

public static final String TAG = "MMuzammil";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d(TAG, "MainActivity:in onCreate");
    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new FirstFragment()).commit();
}

@Override
protected void onStart() {
    super.onStart();
    Log.d(TAG, "MainActivity:in onStart");
}

@Override
protected void onResume() {
    super.onResume();
    Log.d(TAG, "MainActivity:in onResume");
}

@Override
protected void onPause() {
    super.onPause();
    Log.d(TAG, "MainActivity:in onPause");
}

@Override
protected void onStop() {
    super.onStop();
    Log.d(TAG, "MainActivity:in onStop");
}

@Override
protected void onDestroy() {
    super.onDestroy();
    Log.d(TAG, "MainActivity:in onDestroy");
}

@Override
protected void onRestart() {
    super.onRestart();
    Log.d(TAG, "MainActivity:in onRestart");
}
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-22 07:56:38

这仅仅是因为您正在调用super.onStart(),然后在活动中打印日志。因此,基本上,您的活动的onStart()首先运行。

我猜:)

票数 2
EN

Stack Overflow用户

发布于 2016-06-22 08:03:10

这是正常行为。如果您需要在启动之前以片段的形式完成某件事情,最好重写并使用onAttach(上下文上下文)方法。

票数 2
EN

Stack Overflow用户

发布于 2021-11-29 10:13:44

我也有同样的问题。我把这个添加到我的Fragment.onStart()

代码语言:javascript
复制
override fun onStart() {
    super.onStart()
    launch {
        requireActivity().lifecycle.withStarted {
            // do work
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37961671

复制
相关文章

相似问题

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