【问题标题】:If I use AppCompatActivity, do I need to use Fragments of v4 library?如果我使用 AppCompatActivity,我需要使用 v4 库的 Fragments 吗?
【发布时间】:2015-12-13 14:01:45
【问题描述】:

我指的是大书呆子牧场android书学习android。

当我到达第 7 章开始解释片段时,它说如果我希望我的应用程序支持 API

然后我到了第 13 章解释工具栏,它说工具栏是在 Android 5.0 中引入的,所以在这里我决定使用 AppCompat 库并让我的类扩展 AppCompatActivity(最终扩展 FragmentActivity)。

当我使用 AppCompatActivity 扩展我的类时,我立即收到如下错误:无法解析方法 getActivity()、setArguments()、getArguments()

这是否意味着如果我使用 AppCompat,我必须使用 android.support.v4.library Fragment?由于我是初学者,我还有几个问题......

我不认为我的应用程序支持 API

【问题讨论】:

  • 您必须包含 appcompat-v7:23,它包含您在 v4 中需要的所有类
  • @PankajNimgade,是的,我知道,但我的问题是我应该使用哪个 Fragment 类
  • 因为您的类只是从哪个库中替换,而不是它自己的类,您将使用相同的类名,例如 getSupportFragmentManager()

标签: android android-fragments android-activity android-appcompat android-fragmentactivity


【解决方案1】:

这是否意味着我必须使用 android.support.v4.library Fragment 如果 我使用 AppCompat??

不,你没有。即使您正在扩展AppCompatActivity,您仍然可以使用本机片段支持。您将使用getFragmentManager() 而不是getSupportFragmentManager()。我仍然强烈建议您使用支持库支持。随着支持库的每次更新,您都会获得错误修复和潜在的新功能,这些功能大多也适用于旧版本的 Android,否则您将无法使用

【讨论】:

  • 我从未使用过支持库。令人惊讶的是,我在getFragmentManager() 中没有错误。当我将鼠标悬停在一个错误上时,比如return new CrimeListFragment(),它显示为必需:android.app.Fragment,找到packagename.CrimeListFragment...这里CrimeListFragment 扩展AppCompatActivity,你知道这是什么意思吗?
  • 这意味着 CrimeListFragment 正在从支持库中导入 Fragment,但是由于您使用的是 getFragmentManager,因此他希望从原生支持中获取 Fragment。因此不兼容。使用 getSupportFragmentManager 代替 getFragmentManager
  • 哦,这引起了另一个混乱......在按照本书的步骤进行操作时,我特别注意不使用支持库,但是我确实将其添加到我的依赖项中......但是我一直使用 getFragmentManager() 直到第 13 章开始,即工具栏,它工作得很好......这些错误是在我扩展 AppCompatActivity 之后出现的(这只是第 13 章的第二页)----- 所以是是它,还是没有使用 Fragment of support?
  • AppCompatActivity 是一个FragmentActivity,它是一个ActivityFragmentActivity 可以同时使用支持和不支持片段库。如果您有编译时错误,与 Fragment 相关,可能是因为您的导入和正在使用的 Fragment 管理器类型不匹配。老实说,我不会花太多时间在这个主题上,总是使用支持库
  • 我刚刚意识到我正在让我的 3-4 个类扩展 AppCompatActivity...但只需要 2 个类就可以了。现在一切正常
猜你喜欢
  • 2016-01-10
  • 2022-08-04
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
相关资源
最近更新 更多