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

Fri*_*ail 9 java testing android robotium

我在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)
Run Code Online (Sandbox Code Playgroud)

有问题的一行是:

     solo.enterText((android.widget.EditText) solo.getView("amount"), "11.11");  
Run Code Online (Sandbox Code Playgroud)

我已经确认该字段存在,不确定还有什么可能导致问题.任何帮助,将不胜感激

小智 8

由于启用了Advanced Profiling选项,因此发生在我身上.要禁用高级分析,请按照下列步骤操作:

1.选择"运行">"编辑配置".2.在左窗格中选择您的应用程序模块.3.单击"性能分析"选项卡,然后取消选中"启用高级性能分析".


Ale*_*lex 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"); 
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可以使用直接访问而无需独奏:

editText.setText("11.11");
Run Code Online (Sandbox Code Playgroud)