为 API<23 使用 setCustomInsertionActionModeCallback 时出现 NoSuchMethodError

NoSuchMethodError while using setCustomInsertionActionModeCallback for API<23

我正在使用 Nexus 6 (API 22)。当用户长按 Edittext 时,我想添加更多选项。通常当我们长按 Edittext 时,会出现粘贴弹出菜单,我想在粘贴菜单之外添加更多功能。

Android 文档说,当我们实现 setCustomInsertionActionModeCallback 时,我们可以覆盖该行为,但在我的情况下它不起作用。但在 Nexus 6P (API 23) 中它正在工作 fine.Any 帮助将不胜感激。

这是我在执行 setCustomInsertionActionModeCallback 时遇到的错误

java.lang.NoSuchMethodError: No virtual method setCustomInsertionActionModeCallback(Landroid/view/ActionMode$Callback;)V in class L/view/WriterEditText; or its super classes (declaration of 'view.WriterEditText' appears in /data/app/-1/base.apk)
         at .EditorViewManager.createEditText(EditorViewManager.java:79)
         at render.EditorViewManager.createViewAtIndex(EditorViewManager.java:207)
         at render.Renderer.renderContent1(Renderer.java:158)
         at render.Renderer.renderContent(Renderer.java:135)
         at .render.Renderer.reloadDocument(Renderer.java:704)
         at EditorActivity.onCreate(EditorActivity.java:89)
         at android.app.Activity.performCreate(Activity.java:5990)
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
         at android.app.ActivityThread.access0(ActivityThread.java:151)
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
         at android.os.Handler.dispatchMessage(Handler.java:102)
         at android.os.Looper.loop(Looper.java:135)
         at android.app.ActivityThread.main(ActivityThread.java:5254)
         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:903)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

该方法是在 API 级别 23 中添加的。您不能在旧设备上使用它。欢迎您在 Build 版本检查中包装您的电话:

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) {
  // call that method
}