java.lang.IllegalStateException: Невозможно выполнить это действие на незапечатанном экземпляре - PullRequest
0 голосов
/ 23 февраля 2019

Я использую сервис специальных возможностей, чтобы найти кнопку на экране и щелкнуть ее, но по какой-то причине я получаю следующее сообщение об ошибке:

java.lang.IllegalStateException: Cannot perform this action on a not sealed instance.
    at android.view.accessibility.AccessibilityNodeInfo.enforceSealed(AccessibilityNodeInfo.java:3046)
    at android.view.accessibility.AccessibilityNodeInfo.findAccessibilityNodeInfosByText(AccessibilityNodeInfo.java:1529)
    at com.myapp.adapters.Adapter_Click$11.run(Adapter_Click.java:1874)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6718)
    at java.lang.reflect.Method.invoke(Method.java:-2)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

И строка, к которой она относится:

List<AccessibilityNodeInfo> list = source.findAccessibilityNodeInfosByText("Accept".toLowerCase());

И затем я использую это, чтобы нажать на кнопку:

if (view.performAction(AccessibilityNodeInfo.ACTION_CLICK)) 
{
  Log.e(TAG, "Button clicked");
}

Я не видел никаких проблем с этим в течение последнего года, пока я только недавно не обновился до AndroidX.Есть ли способ проверить, является ли это запечатанным экземпляром, прежде чем пытаться щелкнуть по нему?Я даже попытался обернуть его в попытку / поймать, и это все еще не работает мое приложение.

1 Ответ

0 голосов
/ 25 февраля 2019

Запечатывание сделано, чтобы сделать узлы неизменяемыми.Такие исключения часто возникают, когда служба использует узел после его повторного использования.

...