gpt4 book ai didi

android - Android 9 Pie 中的拖放崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:47 26 4
gpt4 key购买 nike

当我在 Android 9 Pie 上试用我的应用程序时,我无法让拖放功能像在以前的版本中一样工作。基本上发生的事情是调用 event.getLocalState() 返回 null。这仅发生在 Android 9 上。 fragment :

protected final class DragListener implements View.OnDragListener {

@Override
public boolean onDrag(View v, DragEvent event) {

// Here I get null
final NumberButton draggedButton = (NumberButton) event.getLocalState();
}
}

我在 OnTouchListener 中初始化拖动:

protected class MyTouchListener implements View.OnTouchListener {

private float pressedY;
private float pressedX;

@Override
public boolean onTouch(final View view, MotionEvent motionEvent) {

NumberButton draggedButton = (NumberButton) view;

if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
// DOING SOMETHING HERE
return true;
} else if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
if (getMoveDistance(motionEvent, pressedX, pressedY) >= 10) {
draggedButton.markSelected();
View.DragShadowBuilder shadowBuilder = new Utils.ButtonDragShadowBuilder(view, motionEvent.getX(), motionEvent.getY());
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
view.startDragAndDrop(null, shadowBuilder, draggedButton, 0);
} else {
view.startDrag(null, shadowBuilder, draggedButton, 0);
}
} catch (IllegalStateException e) {
Log.e("Number button", e.getLocalizedMessage());
return false;
}
}
}
}
}

通过查看源代码,我发现 startDragAndDrop 在 Android 8 和 9 中有不同的实现。

首先,有什么线索可以解释为什么会这样吗?

其次,也是更重要的一点,如何解决/解决这个问题?拖放是我应用程序的关键部分,我希望它能在最新的 Android 上运行。

感谢帮助

最佳答案

看起来像this was reported as a bug in July .那时,在即将发布的 Android 9.0 中解决问题可能为时已晚,而且不太可能通过安全补丁修复。

就解决方法而言,假设一次只有一个拖拽,您应该能够跟踪当前拖拽的内容是在其他地方拖拽的(例如, Activity/fragment/ View 模型中的字段)。

关于android - Android 9 Pie 中的拖放崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53181705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com