尝试在空对象引用上调用接口方法finishComposingText()

9
我正在Nexus 6上运行Robotium,并且遇到了以下错误。
 java.lang.NullPointerException: Attempt to invoke interface method      'boolean android.view.inputmethod.InputConnection.finishComposingText()' on      a null object reference
 at android.view.inputmethod.InputConnectionWrapper.finishComposingText(InputConnectionWrapper.java:78)
 at android.view.inputmethod.InputMethodManager.reportFinishInputConnection(InputMethodManager.java:859)
 at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3253)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:135)
 at android.app.ActivityThread.main(ActivityThread.java:5221)
 at java.lang.reflect.Method.invoke(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:372)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

所涉及的行是:
     solo.enterText((android.widget.EditText) solo.getView("amount"), "11.11");  

我已经确认该字段存在,不确定还有什么其他原因导致问题。希望得到帮助。


3
我会尝试翻译以下内容,并使其更通俗易懂,但不改变原意:首先,我会将EditText部分提取为一个本地变量,这样你就可以确定已经成功获取它(因此它不是null值),然后再将它传递给方法。 - Jon Skeet
solo.getView 返回一个 EditText 的实例。 - FriendlyMikhail
有什么解决方案吗?我遇到了同样的问题... - chaitanyad
我也遇到了同样的问题,有解决方案吗? - Karioki
2个回答

8
这种情况可能是由于启用了高级分析选项所致。 要禁用高级分析,请按照以下步骤操作:
1.选择“运行”>“编辑配置”。 2.在左侧窗格中选择您的应用程序模块。 3.单击“分析”选项卡,然后取消选中“启用高级分析”。

不是每个英雄都戴着斗篷。 - noobEinstien

2

看起来您获取了错误的EditText,因为您确认返回的实例是EditText。

android.widget.EditText editText= (android.widget.EditText)solo.getView("amount");
// validate here that you got right text by any method, for example getText()
solo.enterText(editText, "11.11"); 

如果这个不起作用,你可以使用直接访问而不是独奏:

editText.setText("11.11");

我会接受这个。几年前我遇到了问题,但是我不记得我当时是怎么解决的了。谢谢你的回答。 - FriendlyMikhail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接