gpt4 book ai didi

android - Hook 到 fragment 的生命周期,如 Application.ActivityLifecycleCallbacks

转载 作者:IT老高 更新时间:2023-10-28 22:03:13 25 4
gpt4 key购买 nike

在 Android 中,如果您有 Application 上下文,则可以注册一个 Application.ActivityLifecycleCallbacks 实例,该实例将在每次 Activity 经历其生命周期回调之一时被调用。

我怎样才能为 fragment 完成相同的操作?我认为 Fragments 没有这样的界面,也没有任何明确的地方可以添加它。

也许自定义一个 FragmentHostCallback 创建一个 FragmentController 但我怎样才能为整个应用程序插入它?

用例是一个库,每次 Fragment 调用其生命周期回调并且我不想创建 BaseFragment 时都需要通知它。我只想从应用程序的 onCreate 中被调用,仅此而已(如果可能的话......)。

编辑:

我创建了 an issue in Android Open Source Project关于这个。

最佳答案

自版本 25.2.0在 Android 支持库中,FragmentManager.FragmentLifecycleCallbacks 类是静态的,所有人都可以访问。

我们现在可以使用该类的实例并将其注册到 ActivitysupportFragmentManager 中。

public class ExampleActivity extends AppCompatActivity {

public void onCreate(Bundle savedInstaceState) {

// initialization code
getSupportFragmentManager()
.registerFragmentLifecycleCallbacks(new FragmentManager.FragmentLifecycleCallbacks() {
@Override
public void onFragmentPreAttached(FragmentManager fm, Fragment f, Context context) {
super.onFragmentPreAttached(fm, f, context);
}

@Override
public void onFragmentAttached(FragmentManager fm, Fragment f, Context context) {
super.onFragmentAttached(fm, f, context);
}

@Override
public void onFragmentCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) {
super.onFragmentCreated(fm, f, savedInstanceState);
}

@Override
public void onFragmentActivityCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) {
super.onFragmentActivityCreated(fm, f, savedInstanceState);
}

@Override
public void onFragmentViewCreated(FragmentManager fm, Fragment f, View v, Bundle savedInstanceState) {
super.onFragmentViewCreated(fm, f, v, savedInstanceState);
}

@Override
public void onFragmentStarted(FragmentManager fm, Fragment f) {
super.onFragmentStarted(fm, f);
}

@Override
public void onFragmentResumed(FragmentManager fm, Fragment f) {
super.onFragmentResumed(fm, f);
}

@Override
public void onFragmentPaused(FragmentManager fm, Fragment f) {
super.onFragmentPaused(fm, f);
}

@Override
public void onFragmentStopped(FragmentManager fm, Fragment f) {
super.onFragmentStopped(fm, f);
}

@Override
public void onFragmentSaveInstanceState(FragmentManager fm, Fragment f, Bundle outState) {
super.onFragmentSaveInstanceState(fm, f, outState);
}

@Override
public void onFragmentViewDestroyed(FragmentManager fm, Fragment f) {
super.onFragmentViewDestroyed(fm, f);
}

@Override
public void onFragmentDestroyed(FragmentManager fm, Fragment f) {
super.onFragmentDestroyed(fm, f);
}

@Override
public void onFragmentDetached(FragmentManager fm, Fragment f) {
super.onFragmentDetached(fm, f);
}
}, true);
}
}

关于android - Hook 到 fragment 的生命周期,如 Application.ActivityLifecycleCallbacks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32723055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com