أحصل على خطأ pyjnius مع الكثير من عمليات الوصول إلى طرق الفصل التي أتوقع أن تعمل:
Traceback (most recent call last):
File "jnius/jnius_export_class_pxi", line 752, in jnius.jnius.JavaMethod.__call__
File "jnius/jnius_export_class.pxi", line 699, in jnius.jnius.JavaMethod.ensure_method
jnius.jnius.JavaException: Unable to find a None method!
خطوات التكاثر:
main.py
:from jnius import autoclass
python_activity = autoclass('org.kivy.android.PythonActivity')
window = python_activity.getWindow()
window.setSoftInputMode(16) # SOFT_INPUT_ADJUST_RESIZE
الحزمة كـ .apk
:
p4a apk --arch=armeabi-v7a --name test --package com.example.test --version 1 --requirements=kivy,python2 --private .
(أو python 3 ، قد تحتاج إلى إضافة وسيطات api و / أو ndk api إذا لم يتم تعيينها في مسارك)
قم بتشغيله وانتظر حتى ينتهي على الفور ، ثم تحقق من logcat. سترى هذا:
Traceback (most recent call last):
File "jnius/jnius_export_class_pxi", line 752, in jnius.jnius.JavaMethod.__call__
File "jnius/jnius_export_class.pxi", line 699, in jnius.jnius.JavaMethod.ensure_method
jnius.jnius.JavaException: Unable to find a None method!
حسنًا ، لقد أجريت بعض عمليات تصحيح أخطاء الطباعة القديمة الجيدة وكان خط التعطل الدقيق هو window = python_activity.getWindow()
، أو في سياق أكبر:
ومع ذلك ، لا يمكنني التفكير في حالة لا يكون فيها Activity
(الذي اشتُق منه PythonActivity
/ SDLActivity
) يحتوي على getWindow()
كما هو موثق هنا: https://developer.android.com/reference/android/app/Activity#getWindow ()
هل هذا خطأ إذن؟
FWIW ، واجه نفس الخطأ مع https://github.com/kivy/python-for-android/pull/1772 . أي شخص لديه فكرة عما إذا كان هذا خطأ Pyjnius أو خطأ مستخدم من جانبي؟
الخطأ هنا هو استدعاء الطريقة في فئة النشاط ، وليس المثيل ، يمكن الوصول إلى المثيل من خلال السمة mActivity
.
هنا مثال على كود العمل https://gist.github.com/47b7b18855b38de3730e081682c558ce
آمل أن تحقق ما تحاول القيام به :).
إغلاق باعتباره ليس خطأ في Pyjnius ، يرجى التعليق أو إعادة فتح إذا كنت تعتقد أن هذا خطأ.
tshirtman : بالون:: تادا: شكرا: القلب:
التعليق الأكثر فائدة
إغلاق باعتباره ليس خطأ في Pyjnius ، يرجى التعليق أو إعادة فتح إذا كنت تعتقد أن هذا خطأ.