2

我正在尝试在 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 通知?

4

3 回答 3

3

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

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

此致!,

塞巴斯蒂安

于 2015-04-02T21:00:22.123 回答
0

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

于 2014-10-06T08:19:27.647 回答
0

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()
于 2020-08-14T22:18:26.937 回答