我正在将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);
}
}
我不知道他的应用和我的应用之间有什么区别。谁能解释折旧错误的工作原理,以及在这种情况下可能会发生什么情况?
作为FragmentPagerAdapter构造函数的第二个参数,您必须显式传递行为类型。使用super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
注意:看看有关BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT的JavaDocs
表示仅当前片段将位于{@linkLifecycle.State#RESUMED}*状态。所有其他片段的上限为{@link Lifecycle.State#STARTED}。