我正在为Android应用程序实现拖放操作.为了知道drop是否发生在drop target中,我需要知道drop target视图的边界矩形.然后,getRawX/Y()当我得到ACTION_UP动作时,我会看到MotionEvent中是否属于这个矩形.
我意识到我可以调用getLeft/Right/Top/Bottom()放置目标视图,但这些是相对于父容器的.我似乎需要知道"真实"或原始值,以便我可以将它们与MotionEvent中的原始x,y进行比较.
创建不确定的横向进度条的最佳方法是什么?如果我这样做,
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setIndeterminate(true);
Run Code Online (Sandbox Code Playgroud)
我仍然在底部得到进度数字(百分比等).在ICS上,我可以这样做,
dialog.setProgressNumberFormat("");
dialog.setProgressPercentFormat(new NumberFormat() {
@Override
public StringBuffer format(double value, StringBuffer buffer, FieldPosition field) {
return new StringBuffer();
}
@Override
public StringBuffer format(long value, StringBuffer buffer, FieldPosition field) {
return new StringBuffer();
}
@Override
public Number parse(String string, ParsePosition position) {
return 0;
}
});
Run Code Online (Sandbox Code Playgroud)
摆脱底部的数字,但这两种方法只适用于ICS.
?谢谢
按照此处的简单指南, https://developers.google.com/analytics/devguides/collection/android/v3/
当我运行我的应用程序时,我得到了这个,
10-28 18:01:17.973 27022-27069/com.foo.bar W/GAV3? Thread[GAThread,5,main]: Service unavailable (code=1), will retry.
10-28 18:01:17.973 27022-27069/com.foo.bar I/GAV3? Thread[GAThread,5,main]: No campaign data found.
10-28 18:01:17.973 525-865/system_process W/ActivityManager? Unable to start service Intent { act=com.google.android.gms.analytics.service.START cmp=com.google.android.gms/.analytics.service.AnalyticsService (has extras) } U=0: not found
Run Code Online (Sandbox Code Playgroud)
从调试开始,它试图启动一个不存在的服务.似乎我应该在我的清单中定义它,但指南没有说明这一点.
我已经放入analytics.xml我的res/values文件夹,
<?xml version="1.0" encoding="utf-8" ?>
<resources
xmlns:tools="https://schemas.android.com/tools"
tools:ignore="TypographyDashes">
<string name="ga_trackingId">UA-XXX-1</string>
<bool name="ga_autoActivityTracking">true</bool>
<bool name="ga_reportUncaughtExceptions">true</bool>
<integer name="ga_dispatchPeriod">1</integer>
<bool name="ga_debug">true</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
由于指南很简单,我完全被这里难住了.如果它有任何区别(并且它不应该),我正在使用android studio/gradle构建,并添加这样的依赖项,
compile files('libs/libGoogleAnalyticsServices.jar')
Run Code Online (Sandbox Code Playgroud)
编辑:有一个想法...这个设备不运行谷歌服务.google analytics lib是否依赖于正在安装的Google服务APK?
在(REST)Web服务中处理OLE的正确模式是什么?这就是我现在正在做的事情,例如,
protected void doDelete(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
...
...
...
try {
try {
em.getTransaction().begin();
// ... remove the entity
em.getTransaction().commit();
} catch (RollbackException e) {
if (e.getCause() instanceof OptimisticLockException) {
try {
CLog.e("optimistic lock exception, waiting to retry ...");
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
doDelete(request, response);
return;
}
}
// ... write response
} catch (NoResultException e) {
response.sendError(HttpServletResponse.SC_NOT_FOUND, e.getMessage());
return;
} finally {
em.close();
}
}
Run Code Online (Sandbox Code Playgroud)
无论何时你在代码中看到睡眠,都很有可能是错误的.有没有更好的方法来处理这个?
另一种方法是立即将故障发送回客户端,但我宁愿不让他们担心.正确的事情似乎做了使服务器上的请求成功所需的一切,即使它需要一段时间.
谢谢.
我读过几个职位描述之间的区别onStart()和onResume():onStart()当活动变得可见被调用,onResume()当活动准备从用户交互调用.精细.
我一直只是添加了代码onPause()和onResume(),从不与困扰onStart()和onStop().
任何人都可以举一些具体的例子说明你可以做些什么onStart(),对比onResume()?这同样适用于onStop()和onPause(),怎么会是onStop()有用的?我必须在这里遗漏一些基本的东西.
我想meta-data根据产品风格定义不同的清单属性.我试着这样做,
src/
main/
AndroidManifest.xml
prod/
AndroidManifest.xml
dev/
AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)
该main清单是完整的,但prod和dev版本稀疏,仅包含元数据,
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.inventory"
android:versionCode="1"
android:versionName="1.0">
<meta-data android:name="analytics"
android:value="true"/>
</manifest>
Run Code Online (Sandbox Code Playgroud)
这是我的理解,味道清单将与主要合并.在我的build.gradle中,我这样做,
android {
productFlavors {
prod {
manifest.srcFile "prod/AndroidManifest.xml"
}
dev {
manifest.srcFile "dev/AndroidManifest.xml"
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
然而,找到我尝试建立"assembleProdDebug",我明白了,
* What went wrong:
A problem occurred evaluating project ':Inventory'.
> No signature of method: org.gradle.api.java.archives.internal.DefaultManifest.srcFile() is applicable for argument types: (java.lang.String) values: [prod/AndroidManifest.xml]
Run Code Online (Sandbox Code Playgroud)
谢谢.
如果我在这样的活动中注册广播接收器,
@Override
protected void onResume() {
super.onResume();
myReceiver = new BroadcastReceiver() { ... };
IntentFilter filter = new IntentFilter("com.example.MY_ACTION");
registerReceiver(myReceiver, filter);
}
Run Code Online (Sandbox Code Playgroud)
这个接收器是出口的?如果另一个应用程序广播com.example.MY_ACTION,是否会收到myReceiver?
如果是,我假设我需要使用registerReceiver()接受字符串权限的形式,然后在我的清单中定义该权限,为其提供高保护级别(例如签名).那是对的吗?有更简单的方法吗?
谢谢.
我看到设置动作模式"完成"/"关闭"按钮的文本颜色.这就是我尝试过的:
<item name="android:actionModeCloseButtonStyle">@style/ActionModeCloseButton</item>
....
<style name="ActionModeCloseButton" parent="android:style/Widget.Holo.ActionButton.CloseMode">
<item name="android:textColor">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但是没有效果.

请注意,在JB上,我将ActionModeCloseButton样式的父级设为常规全息主题就足够了.它在那里工作正常(没有textColor设置甚至).
有任何想法吗?谢谢.
我有一个简单的appwidget,我想在活动中发生动作时(在同一个应用程序中)更新它.在onUpdate()中,我立即更新小部件,工作正常.在我的活动中,我在appUidget中调用相同的静态更新方法,该方法在onUpdate()中调用以更新视图.小部件未更新.
我可以将代码直接跟踪到AppWidgetManager.updateAppWidget()方法中,这一切都很好,但是小部件不会更新.
我能看到的唯一可能的区别是,当从活动的上下文调用appwidget的onUpdate()方法的上下文时,传递给我的静态更新方法的上下文对象是不同的.但是,网上有很多这样的例子,所以我希望它能够起作用.
我有双向,一对多,多对一的关系.比如说,一个公司有很多人,一个人有一个公司,因此,在公司,
@OneToMany(mappedBy = "company", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Collection<Person> persons;
Run Code Online (Sandbox Code Playgroud)
在人的,
@ManyToOne
@JoinColumn(name="COMPANY_ID")
private Company company;
Run Code Online (Sandbox Code Playgroud)
现在,假设我在公司有一个@PrePersist/@PreUpdate方法,当它更新时,我想在所有人身上设置相同的时间戳...就像,
@PrePersist
@PreUpdate
public void setLastModified() {
this.lastModified = System.currentTimeMillis();
if (persons != null) {
for (Person person : persons) {
person.setLastModified(this.lastModified);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我调试这个时,我看到公司中的人员字段总是空的.当我查看人物集合的类型时,它是一个java.util.Vector.不确定这是否相关.我希望看到一些自动加载JPA集合类型.
我究竟做错了什么?