android拖放TextView导致异常

标签 android

我正在尝试在 android 4+ 中使用内置的拖放功能。为此,我创建了自定义 TextView 作为

public class DragSpotTextView extends TextView

textview 拖动工作正常,但是当我将 View 拖动到某个 dragspot(这也是 textview)时,它会给出异常;

01-17 16:16:29.178: E/AndroidRuntime(1193): FATAL EXCEPTION: main
01-17 16:16:29.178: E/AndroidRuntime(1193): java.lang.ClassCastException: java.lang.String cannot be cast to android.text.Spannable
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.widget.TextView.onDragEvent(TextView.java:11223)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.view.View.dispatchDragEvent(View.java:13465)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1104)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1104)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1104)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1104)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1104)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1104)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.view.ViewRootImpl.handleDragEvent(ViewRootImpl.java:3471)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2620)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.os.Looper.loop(Looper.java:137)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at android.app.ActivityThread.main(ActivityThread.java:4424)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at java.lang.reflect.Method.invokeNative(Native Method)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at java.lang.reflect.Method.invoke(Method.java:511)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-17 16:16:29.178: E/AndroidRuntime(1193):     at dalvik.system.NativeStart.main(Native Method)

最佳答案

这是为需要它的人提供的另一种解决方案。当我将项目拖到处理拖动事件的 TextView 时,我遇到了同样的问题。显然,源代码中引起问题的行在 TextView.onDragEvent() 中(以下代码中的第 3 个):

 case DragEvent.ACTION_DRAG_LOCATION:
     final int offset = getOffsetForPosition(event.getX(), event.getY());
     Selection.setSelection((Spannable)mText, offset);
     return true;

我的解决方法是在我的 OnDragListener 中为这个 TextView 使用这种类型的事件:

 if (dragEvent.getAction() == DragEvent.ACTION_DRAG_LOCATION) return true;

这是 Android 中的一个错误,当然,这在正常情况下不应该发生。

关于android拖放TextView导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14377498/

相关文章:

java - LinearLayout嵌套到RelativeLayout时设置LinearLayout的LayoutParams

android - 使用 ADB 访问屏幕上的特定 UI 控件

android - React Native - 从 fork 自定义构建

android - 普通dp如何支持大屏?

android - Android 上的 Flex AIR 应用程序能否在启动时作为服务启动?

java - 错误 :Execution failed for task ':app:processDebugManifest' . list 合并因多个错误而失败,请参阅日志

java - Android:从Activity调用fragment函数,fragment函数包含getActivity()并返回null

android - Mifare Plus 与 Mifare DESfire(安卓)

android - 从 Android 上的视频播放中捕获 YUV 帧

c# - 使用带有进度对话框的异步任务的 Xamarin.forms Web 服务调用