【问题标题】:Anko toast() method causes java.lang.NoSuchMethodError when called from FragmentAnko toast() 方法在从 Fragment 调用时导致 java.lang.NoSuchMethodError
【发布时间】:2017-01-30 09:12:53
【问题描述】:

当我从 Android Fragment 调用 toast("Toast's message text") 时出现以下错误:

java.lang.NoSuchMethodError: 没有虚拟方法getActivity()Landroid/app/Activity;在 Landroid/support/v4/app/Fragment 类中;或其超类('android.support.v4.app.Fragment' 的声明出现在 name-of-the-file-classes.dex 中)

我正在使用 Anko v0.9.1 和 Kotlin 1.0.6

这次崩溃的原因可能是什么?标准的 Android Toast 工作得很好。在活动中也可以使用 toast() 函数。

【问题讨论】:

  • 使用这个 Toast.makeText(getActivity(),"message",Toast.LENGTH_SHORT).show();
  • 我在我的问题中说标准的 Android Toast 可以正常工作。但是我想知道为什么Anko的“toast()”扩展方法在这种情况下不起作用。
  • 你的 toast() 方法的实现是什么
  • 不是我的实现,是Anko:github.com/Kotlin/anko
  • 发布您的代码。

标签: android kotlin toast android-toast anko


【解决方案1】:

如果你想在一个类(例如适配器)中使用它,你肯定必须先获取活动(上下文)

holder.itemView.setOnClickListener(
                { view ->
                    view.getContext().toast("Message")
                }
        )

【讨论】:

    【解决方案2】:

    很奇怪,应该是bug吧。

    但是下一个对我有用

    activity.toast("Toast's message text")
    

    context.toast("Toast's message text")
    

    【讨论】:

    • 我花了很长时间才发现我是从片段中调用它并且需要上下文/活动
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 2019-09-29
    • 2012-08-17
    • 1970-01-01
    • 2020-09-08
    相关资源
    最近更新 更多