Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 图像视图拖动';n';drop 7.1.1错误_Android_Android Layout_Drag And Drop - Fatal编程技术网

Android 图像视图拖动';n';drop 7.1.1错误

Android 图像视图拖动';n';drop 7.1.1错误,android,android-layout,drag-and-drop,Android,Android Layout,Drag And Drop,我有两个ViewGroups,它们只包含ImageViews。一个ViewGroup(RecyclerView)类似于工具箱。另一个是工作区(RelativeLayout)。我需要从工具箱中拖动一个ImageView,然后将其放到工作区 我试图将整个ImageView从一个父视图移动到另一个父视图 case DragEvent.ACTION_DROP: View view = (View) event.getLocalState(); ViewGroup owner = (ViewGroup)

我有两个
ViewGroup
s,它们只包含
ImageView
s。一个
ViewGroup
RecyclerView
)类似于工具箱。另一个是工作区(
RelativeLayout
)。我需要从工具箱中拖动一个
ImageView
,然后将其放到工作区

我试图将整个ImageView从一个父视图移动到另一个父视图

case DragEvent.ACTION_DROP:
View view = (View) event.getLocalState();
ViewGroup owner = (ViewGroup) view.getParent();
owner.removeView(view);
RelativeLayout container = (RelativeLayout) layoutview;
container.addView(view);
view.setVisibility(View.VISIBLE);
break;
这在2月份更新的7.1.1以下的Android上运行良好。但在2月7.1日,我有一个例外:

ClassCastException:android.widget.RelativeLayout$LayoutParams 无法强制转换为android.support.v7.widget.RecyclerView$LayoutParams

它出现在
view.setVisibility()
中。在调试器中,我可以看到,拖放后,
ImageView
在父级中具有
RelativeLayout
,在LayoutParams中具有
RelativeLayout.LayoutParams
。但是当视图调用其
setVisibility
时,就会运行
RecycleView
布局

为什么此异常仅在2月7.1.1更新时引发?我该怎么办?也许我应该只移动数据而不是整个视图?但是我必须在工作区创建一个新的
ImageView

UPD:Logcat:

E/AndroidRuntime: FATAL EXCEPTION: main
                                                               Process: com.alexander.example, PID: 20588
                                                               java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.support.v7.widget.RecyclerView$LayoutParams
                                                                   at android.support.v7.widget.RecyclerView.getChildViewHolderInt(RecyclerView.java:4226)
                                                                   at android.support.v7.widget.RecyclerView$LayoutManager.onInitializeAccessibilityNodeInfoForItem(RecyclerView.java:9406)
                                                                   at android.support.v7.widget.RecyclerViewAccessibilityDelegate$1.onInitializeAccessibilityNodeInfo(RecyclerViewAccessibilityDelegate.java:90)
                                                                   at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.onInitializeAccessibilityNodeInfo(AccessibilityDelegateCompat.java:246)
                                                                   at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.onInitializeAccessibilityNodeInfo(AccessibilityDelegateCompatJellyBean.java:66)
                                                                   at android.view.View.onInitializeAccessibilityNodeInfo(View.java:6607)
                                                                   at android.view.View.createAccessibilityNodeInfoInternal(View.java:6568)
                                                                   at android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo(View.java:23638)
                                                                   at android.view.View.createAccessibilityNodeInfo(View.java:6551)
                                                                   at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:145)
                                                                   at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
                                                                   at android.view.View.onInitializeAccessibilityEventInternal(View.java:6505)
                                                                   at android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent(View.java:23550)
                                                                   at android.support.v4.view.AccessibilityDelegateCompatIcs.onInitializeAccessibilityEvent(AccessibilityDelegateCompatIcs.java:97)
                                                                   at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:192)
                                                                   at android.support.v4.view.AccessibilityDelegateCompat.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:432)
                                                                   at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:241)
                                                                   at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.onInitializeAccessibilityEvent(AccessibilityDelegateCompatJellyBean.java:61)
                                                                   at android.view.View.onInitializeAccessibilityEvent(View.java:6491)
                                                                   at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:6358)
                                                                   at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:23489)
                                                                   at android.support.v4.view.AccessibilityDelegateCompatIcs.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatIcs.java:122)
                                                                   at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:223)
                                                                   at android.support.v4.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:371)
                                                                   at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:268)
                                                                   at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatJellyBean.java:87)
                                                                   at android.view.View.sendAccessibilityEventUnchecked(View.java:6341)
                                                                   at android.view.View$SendViewStateChangedAccessibilityEvent.run(View.java:23675)
                                                                   at android.view.View$SendViewStateChangedAccessibilityEvent.runOrPost(View.java:23708)
                                                                   at android.view.View.notifyViewAccessibilityStateChangedIfNeeded(View.java:9475)
                                                                   at android.view.View.setFlags(View.java:11591)
                                                                   at android.view.View.setVisibility(View.java:8069)
                                                                   at android.widget.ImageView.setVisibility(ImageView.java:1551)
                                                                   at com.alexander.example.CustomRelativeLayout.onDragEvent(CustomRelativeLayout.java:353)
                                                                   at android.view.View.callDragEventHandler(View.java:20901)
                                                                   at android.view.View.dispatchDragEvent(View.java:20889)
                                                                   at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1441)
                                                                   at com.alexander.example.CustomRelativeLayout.dispatchDragEvent(CustomRelativeLayout.java:275)

尝试添加新的LayoutParams
ImageView
以从
RecyclerView
中删除并添加到
RelativeLayout
,因此此视图已具有
RelativeLayout.LayoutParams
(我已在调试器中对其进行了检查)。无论如何,我尝试设置新的
RelativeLayout.LayoutParams
,但没有任何效果。我甚至尝试设置new
RecyclerView.LayoutParams
,然后我将强制转换异常
RecyclerView$LayoutParams
设置为
RelativeLayout$LayoutParams
。这看起来像Android SDK中的一个bug。如果你已经安装了安卓msources,你可以在安卓代码中设置断点,看看哪里出了问题,如果layoutparams真的错了,我试着理解源代码。我只理解
View.onInitializeAccessibilityNodeInfo
调用
AccessibilityDelegateCompat$AccessibilityDelegateKeyImpl$1.onInitializeAccessibilityNodeInfo
调用
RecycleServiceAccessibilityDelegate$1.onInitializeAccessibilityNodeInfo
。(它是否应该调用JellyBean委托???)而
ImageView
的父级和
LayoutParams
始终属于
RelativeLayout
。请参阅使用stacktrace更新的帖子。尝试使用新的LayoutParams
ImageView
将其从
RecyclerView
中删除并添加到
RelativeLayout
,添加它,因此此视图已具有
RelativeLayout.LayoutParams
(我已在调试器中对其进行了检查)。无论如何,我尝试设置新的
RelativeLayout.LayoutParams
,但没有任何效果。我甚至尝试设置new
RecyclerView.LayoutParams
,然后我将强制转换异常
RecyclerView$LayoutParams
设置为
RelativeLayout$LayoutParams
。这看起来像Android SDK中的一个bug。如果你已经安装了安卓msources,你可以在安卓代码中设置断点,看看哪里出了问题,如果layoutparams真的错了,我试着理解源代码。我只理解
View.onInitializeAccessibilityNodeInfo
调用
AccessibilityDelegateCompat$AccessibilityDelegateKeyImpl$1.onInitializeAccessibilityNodeInfo
调用
RecycleServiceAccessibilityDelegate$1.onInitializeAccessibilityNodeInfo
。(它是否应该调用JellyBean委托???)而
ImageView
的父级和
LayoutParams
始终属于
RelativeLayout
。请参阅stacktrace更新的帖子。