是什么导致Android Studio将FragmentManager标记为已弃用?

问题描述 投票:0回答:1

我正在将Udacity纳米级程序用于Android基础。我在“导游应用程序”项目中,该项目需要一个ViewPager,一个TabLayout和片段。

当我遵循各种教程和示例时,我将创建一个TestAdapter.java类。它始于此:

package com.example.android.tourguide001;

import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

public class TestAdapter extends FragmentPagerAdapter {
    public TestAdapter(FragmentManager fm) {
        super(fm);
    }
}

行“ super(fm);”有一行通过“ super”开头,并且悬停文字显示不建议使用Fragment Manager。

我尝试了各种进口。我尝试了不同的构造函数。我一直处于僵局,很明显,我对片段和片段管理器的工作方式有基本的误解。

[我去了YouTube,找到了一个制作了功能导游应用程序的学生,并获得了他的代码副本以供学习。在他的Adapter类中,他具有与我的相同的导入,并且他具有与我相同的代码,但是不建议使用他的Fragment Manger。

在这种情况下,他的代码是:

package com.example.tourguideapp;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

public class ViewAdapterPage extends FragmentPagerAdapter {

    public ViewAdapterPage(FragmentManager fm)
    {
        super(fm);
    }
}

我不知道他的应用和我的应用之间有什么区别。谁能解释折旧错误的工作原理,以及在这种情况下可能会发生什么情况?

java android android-fragments deprecated
1个回答
1
投票

作为FragmentPagerAdapter构造函数的第二个参数,您必须显式传递行为类型。使用super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)

注意:看看有关BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT的JavaDocs

表示仅当前片段将位于{@linkLifecycle.State#RESUMED}*状态。所有其他片段的上限为{@link Lifecycle.State#STARTED}。

© www.soinside.com 2019 - 2024. All rights reserved.