- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
很抱歉,如果我犯了任何愚蠢的错误,但是我找不到此信息的来源:
我正在尝试在我的EditText“ etItem”上实现onDrag侦听器
这是我的代码:
etItem.setOnDragListener(new OnDragListener(){
@Override
public boolean onDrag(View v, DragEvent dragevent) {
if(null!=dragevent && null!=v){
if( dragevent.getAction() == DragEvent.ACTION_DROP )
{
View view = (View) dragevent.getLocalState();
ViewGroup owner = (ViewGroup) view.getParent();
int itemNum = (Integer) view.getTag();
itemAmounts[itemNum] = 0;
owner.removeView(view);
return true;
}
}
return false;
}});
03-26 15:47:21.185: E/AndroidRuntime(1439): FATAL EXCEPTION: main
03-26 15:47:21.185: E/AndroidRuntime(1439): java.lang.NullPointerException
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.widget.Editor.onDrop(Editor.java:1797)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.widget.TextView.onDragEvent(TextView.java:8350)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.View.dispatchDragEvent(View.java:16375)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1237)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1237)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1237)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1237)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1237)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1237)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1237)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1237)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1237)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewRootImpl.handleDragEvent(ViewRootImpl.java:3838)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewRootImpl.access$600(ViewRootImpl.java:95)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:2999)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.os.Handler.dispatchMessage(Handler.java:99)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.os.Looper.loop(Looper.java:137)
03-26 15:47:21.185: E/AndroidRuntime(1439): at android.app.ActivityThread.main(ActivityThread.java:5041)
03-26 15:47:21.185: E/AndroidRuntime(1439): at java.lang.reflect.Method.invokeNative(Native Method)
03-26 15:47:21.185: E/AndroidRuntime(1439): at java.lang.reflect.Method.invoke(Method.java:511)
03-26 15:47:21.185: E/AndroidRuntime(1439): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-26 15:47:21.185: E/AndroidRuntime(1439): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-26 15:47:21.185: E/AndroidRuntime(1439): at dalvik.system.NativeStart.main(Native Method)
03-26 15:47:21.345: W/ActivityManager(297): Force finishing activity com.listcalc.main/.MainActivityFree
最佳答案
我认为这是EditText
小部件和Android中的拖放API的错误。我在其他解决方案中链接的问题跟踪器中添加了一个帖子,但是为了便于阅读,我将在此处进行复制。如果您遇到此问题,请please go to the tracker并加注星标,以期使Android工程师意识到这一点(我想是如意算盘)。
撞车原因
我在尝试使用拖放API在EditText
中移动FrameLayout
(非常简单的目标)时遇到了4.4.2中的崩溃/错误。我在我的OnDragListener
上仅设置了一个FrameLayout
,但是很显然,该框架调用了所有子级View
的OnDragEvent()
回调,如在崩溃堆栈跟踪中所示。
崩溃发生在内部类android.widget.Editor.onDrop()
中,在该类中该方法尝试从传递给该方法的ClipData
中访问DragEvent
信息。
From 4.4.2 source:
1828 void onDrop(DragEvent event) {
1829 StringBuilder content = new StringBuilder("");
1830 ClipData clipData = event.getClipData();
1831 final int itemCount = clipData.getItemCount();
1832 for (int i=0; i < itemCount; i++) {
1833 Item item = clipData.getItemAt(i);
1834 content.append(item.coerceToStyledText(mTextView.getContext()));
1835 }
....
event.getClipData()
返回
null
。然后在第1831行中,
clipData.getItemCount()
将触发NPE。这似乎只发生在
EditText
上,因为它们有一个
android.widget.Editor
实例字段,这使我认为这是一个错误/疏忽。
OnDragListener
对象上设置虚拟
EditText
。但是,虚拟侦听器可以只是
myEditText.setOnDragListener( new View.OnDragListener() {
@Override
public boolean onDrag( View v, DragEvent event) {
return true;
}
});
true
,您将告诉您已经处理了该事件的框架,无论Action的类型是什么(即,通过调用
event.getAction()
获得的操作)。这意味着您将拦截Drag事件,并且不会将其进一步传递给View的实际
OnDragEvent()
回调,因此避免了我们在stacktrace中看到的崩溃。
(event.getAction() == DragEvent.ACTION_DROP)
条件,因为如果您为
ACTION_DRAG_STARTED
返回false,则无论如何都不会收到
ACTION_DROP
事件(您可以通过放置
ACTION_DROP
条件下的日志打印消息,您会发现它从未被调用,因为您已经在
false
条件下返回了
else
。
null
中的
ClipData
Editor.onDrop()
时会发生NPE,因此在开始拖动过程时,只需向
ClipData
提供一个虚拟
DragEvent
。
... <other code>
ClipData dummyData = ClipData.newPlainText("dummyData", ""); // don't forget to pass empty String
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDrag(dummyData, shadowBuilder, v, 0);
...
ClipData.newPlainText
为我创建一个简单的纯文本
ClipData
,因为您不能仅使用其构造函数和
ClipData
参数构造一个
null
,因为这也会导致崩溃。
View.startDrag()
开始拖动过程,请确保提供此虚拟
ClipData
。通过这种解决方法,我不需要虚拟
OnDragListener
,也不会出现NPE崩溃。
true
返回
OnDragListener
,您将有效地阻止DragEvent传播到
TextView.onDragEvent()
,因此不会调用其中的任何代码。我不确定这样做的副作用,但是绝对不是一个空方法。
EditText
小部件进行拖放操作时,我发现
TextView.onDragEvent()
确实存在一些奇怪的行为,如果您采用第二种解决方法,最终会被称为。我注意到,当使用我建议的虚拟
ClipData
时,如果您尝试将窗口小部件拖动到
ClipData.newPlainText()
的第二个参数中,则传递给您的“ dummyData”字符串有时会粘贴/插入到
EditText
中。同时在文本框中移动插入符号,或通过键入
EditText
然后将其拖动到位。
EditText
类,并创建了自己的类,并简单地将
onDragEvent()
覆盖为
return true;
,而不调用超类(即
TextView.onDragEvent()
。这本质上与第一种解决方法相同,但我需要无论如何扩展
EditText
类以添加一些额外的功能,无论
TextView.onDragEvent()
中的原始代码做什么,跳过它似乎都不会影响我的个人用例,并且我也没有发现我需要的任何功能。
关于android - 在Nexus上onDragEvent()抛出nullpointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22667098/
我想为这 4 台设备提供 2 种不同的布局。我希望 Nexus4 (1280x720) 和 Nexus7(1024x600) 使用 layoutA,而 NexusOne/NexusS(均为 800x4
我遇到了无法解决的问题。 我买了一个便宜的vps,用ubuntu 12.10然后安装了tomcat7、maven和nexus。所有这些都是最新的。这是一个全新的安装。我启动并部署了nexus,cata
我可以使用HTTP header 中的HTTP基本身份验证凭据从Sonatype Nexus下载文件。 但是我无法通过将凭据作为url的一部分来实现这一点-像这样: http://admin:admi
当我将 Nexus war 安装到我的 tomcat 服务器 Nexus 时,在 Win 主目录中创建其文件夹等。我想将此重定向到我的不同目录。 含义..我希望nexus将其存储库存储在用户定义的文件
在我的内部 Sonatype Nexus 中,存储库(例如 Codehaus 快照)的路由选项卡上写着 --- Publishing --- | Status: Not published |
我安装了 Sonatype Nexus,我有默认用户 admin/admin123。现在我将 Authenticating Realm 更改为 LDAP 并删除了 XML Authenticating
我使用的是 Sonatype Nexus OSS 3.2 版。谁能指导我如何自定义 Nexus 运行的端口? 我找不到任何配置文件来自定义端口和自定义上下文路径? 目前 Nexus 正在运行 http
我正在尝试通过 nexus 3 api 删除存储库中的一些组件 我已按照以下问题中的说明进行操作 Using the Nexus3 API how do I get a list of artifac
我使用 Nexus 3,我想删除我的旧版本。在 Nexus 2 中有一个名为 Remove Releases From Repository 的计划任务。 . Nexus 3 中似乎缺少此任务。 我们
如何在 Nexus 3 中获取特定存储库的大小? 例如,Artifactory 通过 UI 显示存储库“磁盘上的大小”。 Nexus有类似的东西吗?如果不是 - 我如何通过脚本获取此信息? 最佳答案
我有一个生成版本化构建工件的非 Java 项目,我想将其上传到 Nexus 存储库。由于该项目不是 Java,因此它不使用 Maven 进行构建。而且我不想引入 Maven/POM 文件只是为了将文件
我最近将我们的存储库服务器升级到 nexus-3.0.0-M5,我注意到它存在两个问题。 我创建的任何存储库(托管)都会陷入远程连接挂起状态,并且无论我做什么它都不会改变。 我已经有一个巨大的存储/索
我想将一组工件从一个 Nexus 移动到另一个(下载并稍后上传)。我只能一个一个下载神器, ¿有没有办法下载整个文件夹? ¿是否有任何其他类型的操作,如导出/导入? 谢谢! 编辑: 我可以访问用户文件
我正在从 Nexus2 迁移到 Nexus3,并尝试在此过程中进行一些清理。 我真的很想重命名我正在迁移的一些存储库,因为 repositoryID 不如存储库名称那么清晰。在 Nexus 3 中,r
我操作一些 Docker 服务。其中一些是使用 Dockerfiles 自制的。我现在想将它们存储到 Sonatype Nexus 私有(private)存储库中,以将它们发布到我网络中的另一台服务器
首先,我是 Nexus 的新手。因此,如果这是一个太菜鸟的问题,请多多包涵。让我首先解释一下我们当前的构建/部署过程是如何工作的。 我们目前的做法: 我们有一个基于 Maven 的项目。有一个父 PO
我下载了一个解压的 Sonatype Nexus OSS。但不知道如何安装它。有一个自述文件。所有教程都会过时。 nexus.exe没有消息就立即完成。没有日志出现。与 nexus.exe insta
在研究 CI 工具时,我发现许多 CI 安装也集成到 Artifactory 存储库,如 SonaType Nexus 和 JFrog Artifactory。 这些工具听起来与 Maven 高度集成
我们在一些磁盘空间有限的旧硬件上运行 nexus,并希望删除超过某个阈值的工件。 除了 find 和 curl 的组合之外,还有什么办法可以做到这一点吗? ? 最佳答案 有一个计划任务可以自动删除旧的
在 Nexus Repository Manager 2 中,您可以将服务器上已删除的 Assets /组件从 .trash-folder 移动到存储库,以恢复您可能已删除的任何内容。这是因为 Nex
我是一名优秀的程序员,十分优秀!