是什么导致 Android Studio 将 FragmentManager 标记为已弃用?
What causes Android Studio to flag the FragmentManager as deprecated?
我正在参加 Android 基础知识的 Udacity 纳米学位课程。我在Tour Guide App项目中,需要ViewPager、TabLayout和Fragments。
当我按照各种教程和示例进行操作时,我创建了一个 TestAdapter.java class。开头是这样的:
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" 并且悬停文本表示片段管理器已弃用。
我尝试过各种导入。我尝试过不同的构造函数。我一直陷入僵局,很明显我对片段和片段管理器的工作方式存在根本性的误解。
我去了YouTube,找到了一个学生做了一个功能性的导游应用程序,并得到了一份他的代码来学习。在他的 Adapter class 中,他有和我一样的导入,他和我有基本相同的代码,但他的 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);
}
}
我不知道他的应用程序和我的应用程序有什么区别。谁能解释弃用错误的工作原理,以及在这种情况下可能发生的情况?
编辑:感谢您的帮助!答案是...
...在应用程序中构建 gradle 依赖项!将我的复制到他的破坏了他的,将他的复制到我的修复了我的。所以现在我开始更多地研究依赖关系。
有线索感觉好多了!
作为 FragmentPagerAdapter 构造函数的第二个参数,您必须显式传递行为类型。
使用 super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
注意:查看有关 BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
的 JavaDocs
Indicates that only the current fragment will be in the {@link
Lifecycle.State#RESUMED}
* state. All other Fragments are capped at {@link Lifecycle.State#STARTED}.
我正在参加 Android 基础知识的 Udacity 纳米学位课程。我在Tour Guide App项目中,需要ViewPager、TabLayout和Fragments。
当我按照各种教程和示例进行操作时,我创建了一个 TestAdapter.java class。开头是这样的:
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" 并且悬停文本表示片段管理器已弃用。
我尝试过各种导入。我尝试过不同的构造函数。我一直陷入僵局,很明显我对片段和片段管理器的工作方式存在根本性的误解。
我去了YouTube,找到了一个学生做了一个功能性的导游应用程序,并得到了一份他的代码来学习。在他的 Adapter class 中,他有和我一样的导入,他和我有基本相同的代码,但他的 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);
}
}
我不知道他的应用程序和我的应用程序有什么区别。谁能解释弃用错误的工作原理,以及在这种情况下可能发生的情况?
编辑:感谢您的帮助!答案是...
...在应用程序中构建 gradle 依赖项!将我的复制到他的破坏了他的,将他的复制到我的修复了我的。所以现在我开始更多地研究依赖关系。
有线索感觉好多了!
作为 FragmentPagerAdapter 构造函数的第二个参数,您必须显式传递行为类型。
使用 super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
注意:查看有关 BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
的 JavaDocsIndicates that only the current fragment will be in the {@link Lifecycle.State#RESUMED} * state. All other Fragments are capped at {@link Lifecycle.State#STARTED}.