【问题标题】:BaseFragmentActivityApi16.startActivityForResult(intent, int, Bundle) throwing error when targeting Android OBaseFragmentActivityApi16.startActivityForResult(intent, int, Bundle) 在面向 Android O 时抛出错误
【发布时间】:2017-07-25 15:51:45
【问题描述】:

我开始在我的项目中定位 android O 调用 startActivityForResult(intent, int, Bundle) 时出现错误,错误提示只能从组 id com.android.support 调用它。

分级:

compile 'com.android.support:design:26.0.0'
compile 'com.android.support:cardview-v7:26.0.0'
compile 'com.android.support:support-v13:26.0.0'

【问题讨论】:

  • 听起来你应该file a bug
  • @Nick Mowen 您是否正在使用基于支持的片段 ..FragmentActivity -Base 类用于想要使用基于支持的片段和加载器 API 的活动。
  • @ZohraKhan 我在 AppCompatActivity 的 onClick 方法视图中使用它

标签: android


【解决方案1】:

有点晚了,但我找到了解决方法。 我试过ActivityCompat.startActivityForResult(Activity, intent, int, Bundle);,警告消失了!

【讨论】:

  • 如果做法不当,删除警告,这是正确答案
【解决方案2】:

编辑:

根据link,这是一个错误。 如需解决方法,请在发出警告的代码行上方添加此注释:

//noinspection RestrictedApi

老答案:

希望您没有导入错误的库。 Fragment support library 支持运行 Android3.0 之前版本的设备的 Fragment。

根据这个post 在 SO

如果你使用的是android.app.Fragment,还要记得使用Activity; 如果您使用的是 android.support.v4.app.Fragment,请使用 FragmentActivity。 永远不要将 android.support.v4.app.Fragment 附加到 android.app.Activity, 因为这会导致抛出异常。

android.app.Fragment 不同于 android.support.v4.app.Fragment

支持库一带有注释 @RestrictTo(LIBRARY_GROUP)@hide - 它并不是一个公共 API。

【讨论】:

  • 问题是我什至没有使用发生这种情况的片段。我会将我的 gradle 导入添加到帖子中
  • 不适用于 Android Studio 3.1。 Md. Didarul islam 的答案是有效的
【解决方案3】:

在 build.gridle 中使用它

机器人{ lintOptions { 禁用'RestrictedApi' } }

警告:使用它可能会隐藏项目中的其他错误。它将抑制这种类型的所有错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    相关资源
    最近更新 更多