Pyjnius: Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ PythonActivity.getWindow().setSoftInputMode(...)

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 22 ΠΌΠ°Ρ€. 2019  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: kivy/pyjnius

Π― ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ 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!

ДСйствия ΠΏΠΎ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ с этим 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. ΠŸΠΎΡΡ‹Π»ΠΊΠ° ΠΊΠ°ΠΊ .apk :
    p4a apk --arch=armeabi-v7a --name test --package com.example.test --version 1 --requirements=kivy,python2 --private . (ΠΈΠ»ΠΈ python 3, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ api ΠΈ/ΠΈΠ»ΠΈ ndk api, Ссли ΠΎΠ½ΠΈ Π½Π΅ установлСны Π² вашСм ΠΏΡƒΡ‚ΠΈ)

  2. ЗапуститС ΠΈ ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, ΠΏΠΎΠΊΠ° ΠΎΠ½ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ 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!

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π΅ ошибка Π² pyjnius, поТалуйста, ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ»ΠΈ снова ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅, Ссли Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ это Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

ВсС 5 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π₯ΠΎΡ€ΠΎΡˆΠΎ, я Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» ΡΡ‚Π°Ρ€ΡƒΡŽ Π΄ΠΎΠ±Ρ€ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ, ΠΈ точная строка сбоя β€” window = python_activity.getWindow() ΠΈΠ»ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ контСкстС:

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

Однако я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС случай, ΠΊΠΎΠ³Π΄Π° Activity (ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ происходят PythonActivity / SDLActivity ) Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ getWindow() , ΠΊΠ°ΠΊ описано здСсь: https://developer.android.com/reference/android/app/Activity#getWindow ()

Π­Ρ‚ΠΎ Π±Π°Π³ Ρ‚ΠΎΠ³Π΄Π°?

FWIW столкнулся с Ρ‚ΠΎΠΉ ΠΆΠ΅ ошибкой с https://github.com/kivy/python-for-android/pull/1772 . ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚, являСтся Π»ΠΈ это ошибкой pyjnius ΠΈΠ»ΠΈ ошибкой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° ΠΌΠΎΠ΅ΠΉ сторонС?

Ошибка здСсь Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса Activity, Π° Π½Π΅ экзСмпляра, экзСмпляр доступСн Ρ‡Π΅Ρ€Π΅Π· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ mActivity .

Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° https://gist.github.com/47b7b18855b38de3730e081682c558ce

надСюсь, ΠΎΠ½ достигнСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ :).

Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π΅ ошибка Π² pyjnius, поТалуйста, ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ»ΠΈ снова ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅, Ссли Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ это Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

@tshirtman :balloon: :tada: спасибо :heart:

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ