【问题标题】:Error while displaying Toast on Android with Python and jnius使用 Python 和 jnius 在 Android 上显示 Toast 时出错
【发布时间】:2014-11-30 11:05:47
【问题描述】:

我正在尝试在 QPython 上使用 jnius 显示敬酒消息。我无法使用 Py4A 库,因为最终结果应该在没有 SL4A 库的 Kivy 应用程序中工作。

from jnius import autoclass

activity = autoclass("org.renpy.android.PythonActivity").mActivity
toaster = autoclass("android.widget.Toast")

toast = toaster.makeText(activity.getApplicationContext(), "I'm a Toast", toaster.LENGTH_SHORT)
toast.show()

但是,我收到了jnius.jnius.JavaException: No methods matching your arguments

如何在 jnius 中正确使用 toast 通知?

【问题讨论】:

    标签: android python pyjnius


    【解决方案1】:

    我知道这个问题很老,但也许这对其他人有帮助。 第一个问题是因为你发送一个字符串作为参数,但是你需要发送java.lang.CharSequence。你可以使用 jnius.cast 来做到这一点。 下一个技巧是使用 runOnUIThread,但为了快速吐司,您可以简单地使用:

    from jnius import autoclass
    PythonActivity = autoclass('org.renpy.android.PythonActivity')
    PythonActivity.toastError("Hello!")
    

    最好的问候!,

    塞巴斯蒂安

    【讨论】:

      【解决方案2】:

      您为什么不简单地在 Kivy 中创建一个弹出窗口,为 Android 打包它并查看它是否有效,如果您仍然要使用 Kivy?您还可以使用 Kivy 中包含的漂亮 Plyer API 通过 Pyjnius 在 Android 上发送通知:看这里http://kivy.org/docs/guide/android.html 和这里https://plyer.readthedocs.org/en/latest/

      【讨论】:

      • 我也打算使用DatePickerDialog/TimePickerDialog,目前 Plyer 不支持它们。弹出窗口会起作用,但我想使用 toast 通知,因为它们完全符合我的要求。
      • 这个 github repo 似乎做你想做的事:github.com/knappador/kivy-toaster
      • 感谢您的链接!我会尝试以同样的方式构建 TimePicker
      【解决方案3】:

      makeToast 接受 CharSequence 而不是 String,您需要将 String 转换为 CharSequence,如下所示:

      from jnius import autoclass, cast
      PythonActivity = autoclass("org.kivy.android.PythonActivity")
      context = PythonActivity.mActivity
      AndroidString = autoclass('java.lang.String')
      Toast = autoclass('android.widget.Toast')
      duration = Toast.LENGTH_SHORT
      text='Hello Toast!'
      text_char_sequence = cast('java.lang.CharSequence', AndroidString(text))
      toast = Toast.makeText(context, text_char_sequence, duration)
      toast.show()
      

      【讨论】:

        猜你喜欢
        • 2014-05-25
        • 2019-08-08
        • 2018-04-20
        • 2017-10-13
        • 1970-01-01
        • 2015-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多