问题标签 [inputconnection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
297 浏览

android - EditText:InputConnection.reportFullscreenMode 中的 NPE

注意:我试图解决的问题仅限于运行 SDK 23 (Marshmallow) 的基于 Rockchip RK312X 的无名中国平板电脑。似乎没有其他设备受到影响,但不幸的是,我被迫使用那些糟糕的设备(顺便说一句,它们上面也有串行端口)用于开发和演示目的。

问题:当从窗口中删除包含任何子类的任何布局时(在 Activity 中调用,包含EditText的自定义被解除等),应用程序崩溃并给出以下堆栈跟踪(完整输出):EditTextfinish()DialogFragment

这是一个非常简单的布局示例:

Activity没有真正做任何事情:

调用finish()已经导致上面提供的堆栈跟踪崩溃。我在完成活动之前尝试过的内容:

  • 清除焦点EditText
  • 隐藏软键盘
  • 从其容器中完全删除EditText( 和 other )Views

相同的 NPE 不断发生。正如我之前所说,问题不仅限于特定的 Activity 或 EditText 的特定子类 - 它在这些设备上随处发生。

我认为通常应该发生的事情:例如此日志来自华为 MediaPad T3,没有崩溃

任何想法如何解决无名棉花糖设备上的 NPE?

0 投票
2 回答
466 浏览

android - 如何为自定义 Android 视图实现提取文本

背景

Android 中的自定义编辑器视图能够通过InputConnection. 我已经能够成功地做出这样的看法。但是,当设备处于横向模式时,系统有时会选择显示提取的文本视图。当用户在此模式下键入时,提取的文本视图应使用与自定义视图中相同的文本进行更新。

我无法实现提取的文本视图功能。(这是我尝试过的一些事情。

我也找不到任何明确的文档或完整的示例来说明如何做到这一点。(这里有一些我读过的更好的东西:)。

MCVE

我已经创建了最基本的自定义编辑器。以下 gif 显示了该功能。它可以从键盘接收文本,但不会更新提取的横向文本视图。因此,除非您关闭键盘,否则您看不到更新的文本。

在此处输入图像描述

MyCustomView.java

MyInputConnection.java

MainActivity.java

activity_main.xml

概括

我正在寻找一个规范的答案,该答案描述并举例说明如何为自定义编辑器视图实现提取的文本更新。

如果我自己弄清楚,我会添加我自己的答案。在那之前,我能做到的最好的就是完全禁用提取的文本。这并不理想。

0 投票
0 回答
351 浏览

android - 如何从 inputConnection 中检测和删除 unicode 序列表情符号?

假设我有一个 edittext 字段,我必须在其上实现“退格”功能。

删除一个简单的字母字符很好,它可以工作:

当字符是表情符号时,问题就来了。

它的长度表示为 2 个 utf-16 字符,例如:


笑脸:

Unicode 代码点:U+1F600

Java转义:\ud83d\ude00


在这种情况下,我会简单地删除 2 个字符。

但是,在某些情况下,表情符号由多个代码点组成,例如:


彩虹旗:️‍</p>

Unicode 代码点序列:U+1F3F3 U+FE0F U+200D U+1F308

Java转义:\ud83c\udff3\ufe0f\u200d\ud83c\udf08


当我按退格键时,只有一个 java 转义字符被删除,而不是整个表情符号。例如标志,只有\udf08最后一部分会被删除,向用户展示搞砸的表情符号。代理对检查并不能让我摆脱困境,我仍然会搞砸表情符号。

如何正确找出要删除的正确字符数量,以便在按退格键时删除 1 个完整的表情符号?(对于标志示例,我需要获得数字 6,才能完全删除它)

0 投票
1 回答
592 浏览

android - Android Studio:WebView.onCreateInputConnection 的问题

我为一些带有自定义 inapp 键盘的 Android 4.2 设备编写了一个 webview 应用程序。事实上,该应用程序在运行 Android 4.2 的设备上运行时没有任何错误。

我知道这是一个非常旧的 android 版本,这就是为什么我现在有了 Android 7.1.2 的新设备的原因,但不幸的是,该应用程序无法在此设备上运行。

在下面的代码示例中,我创建了一个到 WebView 的 InputConnection,并假定它引用了我的自定义键盘。这是变成错误的代码:

对象“MyKeyboard”的“setInputConnection”代码

错误信息:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.aaa.bbb, PID: 5012 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.aaa.bbb/com.example.aaa.bbb.MainActivity }:java.lang.IllegalStateException:在 android.app.ActivityThread 的 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) 的 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666) 中,ic 不能为空。 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper. java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6123) 在 java.lang.reflect.Method.invoke(Native Method) 在 com。android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 引起:java.lang.IllegalStateException: ic 一定不能null 在 com.example.huf.ifsscan.MainActivity.onCreate(MainActivity.kt:59) 在 android.app.Activity.performCreate(Activity.java:6723) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread $H.handleMessage(ActivityThread.java:1478) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6123) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android .internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) E/libEGL: validate_display:99 错误 3008 (EGL_BAD_DISPLAY)

目前我不知道为什么会这样。WebView 对象的“onCreateInputConnection”文档显示它应该没问题。

安卓开发者 | 网页浏览

如果我在 API 19 (Android 4.2) 或 API 25 (7.1) 下编译它没有什么不同。

有谁知道问题可能是什么?

提前致谢

0 投票
2 回答
118 浏览

android - 视图卡在 InputConnection 的 `commitText` 方法上

当用户使用中的键码按下键时,我正在提交文本InputConnection

但是这种方法会挂起视图并在几毫秒后释放

我是在做错什么,还是有其他解决方案?

0 投票
1 回答
144 浏览

android - Android:什么是 InputConnectionWrapper,它有什么作用?

我查看了官方文档,但只有一行告诉我它是一个包装类,用于代理对另一个输入连接的调用。我不明白它在说什么。

我想知道 :

  1. 实际上是InputConnectionWrapper什么,它有什么作用?
  2. 什么是sendKeyEvent(Keyevent keyevent)[它的一种覆盖方法]?
0 投票
1 回答
2070 浏览

flutter - 颤振错误:W/IInputConnectionWrapper:非活动 InputConnection 上的 getExtractedText

我有一个颤振错误:

当我从 TextEditingController 输入中清除 TextField 中的文本时,就会发生这种情况。

这是我的明文功能,它有效:

用户可以在文本字段中输入内容,单击图像 (UrlLauncher),然后返回表单,仍然可以在文本字段中看到相同的文本输入。一切都按应有的方式运行,并且应用程序运行时没有其他错误。

这个错误是我必须担心的,我仍然可以将最终的应用程序提交到商店,还是必须是正确的?我不知道该怎么做。请原谅我缺乏知识,我只是想学习所有这些并且被难住了。这个关于 Flutter 的问题似乎没有其他答案。

0 投票
2 回答
142 浏览

java - 如何在编辑文本中找到光标的位置以从该位置选择文本?

我正在为 android 设备开发键盘,我是文本编辑选项,如谷歌键盘(文本选择、复制粘贴等)。例如,我输入了一个文本 ABSCEONDER,现在我想选择文本的某些部分。就像我想从 E 位置选择文本一样。我所做的是我手动将光标放在 E 位置。现在我如何找到光标的位置以从该位置选择文本?有人可以帮忙吗?

0 投票
1 回答
48 浏览

android - Android 软键盘:只有顶行按键有效

这个问题已经有了答案,它是对 SO 问题库的贡献。

在我的自定义视图中,我实现了onCreateInputConnection这样的方法:

但由于一些奇怪的原因,在 Android 5 的默认 AOSP 键盘中,只有顶行的键有效。请注意,我有一个横向布局。如果我切换到纵向,它开始正常工作。其他键盘也可以正常工作。

0 投票
1 回答
53 浏览

android - InputConnection committing text 删除默认键盘输入文本

大家好,我正在尝试制作一个应用内键盘,它正在工作,除非默认键盘输入了一些东西然后我的键盘输入了一些东西,默认键盘输入在我的键盘输入被输入之前被删除。

所以我试图让系统default keyboard和一个. 就像我说的,除了当我在系统键盘上输入内容然后在 inapp 自定义键盘上输入内容时,一切正常,系统键盘文本被删除,自定义键盘位于行的末尾。这发生在每行inapp keyboardpops upbutton presstext is enteredbeginning