Pyjnius: Exception appelant PythonActivity.getWindow().setSoftInputMode(...)

Créé le 22 mars 2019  ·  5Commentaires  ·  Source: kivy/pyjnius

J'obtiens une erreur pyjnius avec de nombreux accès aux méthodes de classe que je m'attends à fonctionner :

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!

Étapes à reproduire :

  1. Créez un nouveau dossier avec ce main.py :
from jnius import autoclass
python_activity = autoclass('org.kivy.android.PythonActivity')
window = python_activity.getWindow()
window.setSoftInputMode(16)  # SOFT_INPUT_ADJUST_RESIZE
  1. Forfait en .apk :
    p4a apk --arch=armeabi-v7a --name test --package com.example.test --version 1 --requirements=kivy,python2 --private . (ou python 3, vous devrez peut-être ajouter des arguments api et/ou ndk api si ceux-ci ne sont pas définis dans votre chemin)

  2. Exécutez et attendez qu'il se termine instantanément, puis vérifiez logcat. Vous verrez ceci :

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!

Commentaire le plus utile

fermeture comme n'étant pas un bogue dans pyjnius, veuillez commenter ou rouvrir si vous pensez que c'est faux.

Tous les 5 commentaires

Ok, j'ai fait un bon vieux débogage d'impression et la ligne de plantage exacte est window = python_activity.getWindow() , ou dans un contexte plus large :

https://github.com/wobblui/wobblui/blob/653d6db66f60b3bc4165e68440ddfbe8d1460904/src/wobblui/sdlinit.pyx#L60

Cependant, je ne peux pas penser à un cas où le Activity (dont dérivent PythonActivity / SDLActivity ) n'aurait pas getWindow() comme documenté ici : https://developer.android.com/reference/android/app/Activity#getWindow ()

C'est un bug alors ?

FWIW, a rencontré la même erreur avec https://github.com/kivy/python-for-android/pull/1772 . Quelqu'un a-t-il une idée s'il s'agit d'un bogue pyjnius ou d'une erreur de l'utilisateur de mon côté ?

L'erreur ici est d'appeler la méthode sur la classe Activity, pas l'instance, l'instance est accessible via l'attribut mActivity .

voici un exemple de code fonctionnel https://gist.github.com/47b7b18855b38de3730e081682c558ce

j'espère qu'il réalisera ce que vous essayez de faire :).

fermeture comme n'étant pas un bogue dans pyjnius, veuillez commenter ou rouvrir si vous pensez que c'est faux.

@tshirtman :ballon: :tada: merci :coeur:

Cette page vous a été utile?
0 / 5 - 0 notes