我试图在QPython上使用jnius显示toast消息。我无法使用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通知?
答案 0 :(得分:3)
我知道这个问题很老,但也许这会帮助其他人。 第一个问题是因为您发送一个字符串作为参数,但您需要发送java.lang.CharSequence。你可以使用jnius.cast来做到这一点。 下一个技巧是使用runOnUIThread,但是对于快速吐司,你可以简单地使用它:
from jnius import autoclass
PythonActivity = autoclass('org.renpy.android.PythonActivity')
PythonActivity.toastError("Hello!")
最好的问候!,
塞巴斯蒂安
答案 1 :(得分:0)
为什么不简单地在Kivy中创建弹出窗口,将其打包为Android&看看它是否有效,如果你打算使用Kivy呢?您还可以使用Kivy中包含的漂亮的Plyer API通过Pyjnius在Android上发送通知:在这里http://kivy.org/docs/guide/android.html和https://plyer.readthedocs.org/en/latest/
答案 2 :(得分: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()