I am only going to release my application after upgrading to AppCompat 21.0.3. When testing on different emulators, I found that on Android 3.2 a crash occurred every time I tried to select text in my WebView.
This is not like emulator 2.3.3 or 4.0.3 (in 2.3.3 it selects the text and allows me to touch the copy. In 4.0.3 it shows the action mode, which I also expected 3.2). Does anyone come across something similar? Is there any fix, or do we need to wait for the AppCompat update?
E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.UnsupportedOperationException
at android.support.v7.internal.view.menu.MenuWrapperFactory.wrapSupportMenu(MenuWrapperFactory.java:39)
at android.support.v7.internal.view.SupportActionModeWrapper$CallbackWrapper.getMenuWrapper(SupportActionModeWrapper.java:179)
at android.support.v7.internal.view.SupportActionModeWrapper$CallbackWrapper.onCreateActionMode(SupportActionModeWrapper.java:154)
at android.support.v7.app.ActionBarActivityDelegateBase$ActionModeCallbackWrapper.onCreateActionMode(ActionBarActivityDelegateBase.java:1297)
at android.support.v7.app.ActionBarActivityDelegateBase.startSupportActionModeFromWindow(ActionBarActivityDelegateBase.java:648)
at android.support.v7.app.ActionBarActivityDelegate$1.startActionMode(ActionBarActivityDelegate.java:99)
at android.support.v7.widget.WindowCallbackWrapper.startActionMode(WindowCallbackWrapper.java:69)
at android.support.v7.internal.app.ToolbarActionBar.startActionMode(ToolbarActionBar.java:206)
at android.support.v7.app.ActionBarActivityDelegateBase.startSupportActionMode(ActionBarActivityDelegateBase.java:581)
at android.support.v7.app.ActionBarActivityDelegateHC.startActionModeForChild(ActionBarActivityDelegateHC.java:62)
at android.support.v7.internal.widget.NativeActionModeAwareLayout.startActionModeForChild(NativeActionModeAwareLayout.java:44)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:553)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:553)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:553)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:553)
at android.view.View.startActionMode(View.java:3157)
at android.webkit.WebView.setUpSelect(WebView.java:4935)
at android.webkit.WebView.selectText(WebView.java:3957)
at android.webkit.WebView.selectText(WebView.java:3950)
at android.webkit.WebView.performLongClick(WebView.java:3939)
at android.webkit.WebView$PrivateHandler.handleMessage(WebView.java:7752)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
The same thing happens when I try to select text from SearchView in the toolbar.
E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.UnsupportedOperationException
at android.support.v7.internal.view.menu.MenuWrapperFactory.wrapSupportMenu(MenuWrapperFactory.java:39)
at android.support.v7.internal.view.SupportActionModeWrapper$CallbackWrapper.getMenuWrapper(SupportActionModeWrapper.java:179)
at android.support.v7.internal.view.SupportActionModeWrapper$CallbackWrapper.onCreateActionMode(SupportActionModeWrapper.java:154)
...
at android.view.View.startActionMode(View.java:3157)
at android.widget.TextView.startSelectionActionMode(TextView.java:8306)
at android.widget.TextView.performLongClick(TextView.java:8206)
at android.view.View$CheckForLongPress.run(View.java:11910)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
: AppCompat v22. - , , :
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB && Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2) {
myWebView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return true;
}
});
myWebView.setLongClickable(false);
}