替换已弃用的 BrowseFragment AndroidTV

Replacement of deprecated BrowseFragment AndroidTV

此 class 已在 API 级别 27.1.0 中弃用。 使用 BrowseSupportFragment

但是当我替换这个时

public class MainFragment extends BrowseFragment 

public class MainFragment extends BrowseSupportFragment

发生以下异常

Caused by: android.app.Fragment$InstantiationException: Trying to instantiate a class MainFragment that is not a Fragment

我的XML密码是

<?xml version="1.0" encoding="utf-8"?>
  <fragment xmlns:android="http://schemas.android.com/apk/res/android"
  android:name="com.example.tvapplocation1.MainFragment"
  android:layout_width="match_parent" android:layout_height="match_parent">
</fragment>

简短回答:如果您的 Activity 不是从 FragmentActivity 扩展而来,就会发生这种情况。

更长的答案:片段 class 有两个版本,一个内置于 OS 中,另一个是 support/Android X 库 () 的一部分。您应该始终使用 support/Android X 版本,因为它提供了跨 Android OS 版本的兼容性和一致的行为。各种 *SupportFragment classes(如 BrowseSupportFragment)从 support/Android X 版本的 Fragment 扩展而来,这需要您使用 support/Android X 库中的 FragmentActivity。