2014-05-05 27 views
2

我有一个EditText在我的片段中,当我执行输入或任何计数就像输入行为,我想要做的事情。但我有一些问题的KeyEventactionIdonEditorAction IDS所以我按照这个网站的其他线程,可以帮助我很多关于很多事情要做到这一点:onEditorAction的奇怪的错误:“无匹配的一对setHasTransientState调用”

inputSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView exampleView, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_SEARCH || 
       actionId == EditorInfo.IME_ACTION_DONE || 
        event.getAction() == KeyEvent.ACTION_DOWN && 
         event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { 
          //do something 
      } 
      return true; 
     } 
}); 

但是当我做这一切的这种情况下,我的应用程序崩溃和输出我这个在logcat中:

05-05 15:56:05.195: E/View(26569): hasTransientState decremented below 0: unmatched pair of setHasTransientState calls 
05-05 15:56:05.195: W/dalvikvm(26569): threadid=1: thread exiting with uncaught exception (group=0x417fde48) 
05-05 15:56:05.195: E/AndroidRuntime(26569): FATAL EXCEPTION: main 
05-05 15:56:05.195: E/AndroidRuntime(26569): Process: com.myapp PID: 26569 
05-05 15:56:05.195: E/AndroidRuntime(26569): java.lang.NullPointerException 
05-05 15:56:05.195: E/AndroidRuntime(26569): at com.myapp.SomeFragment$3.onEditorAction(SomeFragment.java:148) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at android.widget.TextView.onEditorAction(TextView.java:4395) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at com.android.internal.widget.EditableInputConnection.performEditorAction(EditableInputConnection.java:138) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:297) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at android.os.Handler.dispatchMessage(Handler.java:102) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at android.os.Looper.loop(Looper.java:136) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at android.app.ActivityThread.main(ActivityThread.java:5105) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at java.lang.reflect.Method.invokeNative(Native Method) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at java.lang.reflect.Method.invoke(Method.java:515) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) 
05-05 15:56:05.195: E/AndroidRuntime(26569): at dalvik.system.NativeStart.main(Native Method) 

当我只保留actionId == EditorInfo.IME_ACTION_DONE的条件下,应用程序不会崩溃,但没有做任何事情,和logcat的输出只有这个:

05-05 15:56:05.195: E/View(26569): hasTransientState decremented below 0: unmatched pair of setHasTransientState calls 

我在Google上搜索过,但没有发现一些令我信服的奇怪错误。 对于我和其他人谁也许将要面对同样的问题,我想就这一个:)

回答

0

一些帮助由于您的例外是:

hasTransientState decremented below 0: unmatched pair of setHasTransientState calls 
TextView

,使用的方法

android:imeOptions

android:imeActionId

+0

我得到了相同的错误消息(“无法比拟的对...”)在一个完全不同的上下文 我完全在(已在adapter.getView()设置convertView.setTransientState(真/假))损失什么方法设置/获得布尔实际增量或减量。 – mathheadinclouds

+0

当我使用EditText或AutoCompleteTextView字段时,在日志中看到“E/View:hasTransientState减少到0以下:不匹配的一对setHasTransientState调用”错误,在我的代码中没有对setTransientState()或类似的调用。该应用程序不会因这些错误而崩溃,并且从用户的角度来看似乎很好。这些似乎是SDK的内部错误。 – jk7