小编Jef*_*man的帖子

Android获取View的边界矩形

我正在为Android应用程序实现拖放操作.为了知道drop是否发生在drop target中,我需要知道drop target视图的边界矩形.然后,getRawX/Y()当我得到ACTION_UP动作时,我会看到MotionEvent中是否属于这个矩形.

我意识到我可以调用getLeft/Right/Top/Bottom()放置目标视图,但这些是相对于父容器的.我似乎需要知道"真实"或原始值,以便我可以将它们与MotionEvent中的原始x,y进行比较.

android

44
推荐指数
3
解决办法
4万
查看次数

Android:不确定水平进度(对话框)栏

创建不确定的横向进度条的最佳方法是什么?如果我这样做,

    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.

?谢谢

android android-progressbar android-dialog

20
推荐指数
1
解决办法
2万
查看次数

android google analytics v3:"服务不可用"

按照此处的简单指南, 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?

android google-analytics

19
推荐指数
1
解决办法
7821
查看次数

JPA:处理OptimisticLockException的模式

在(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)

无论何时你在代码中看到睡眠,都很有可能是错误的.有没有更好的方法来处理这个?

另一种方法是立即将故障发送回客户端,但我宁愿不让他们担心.正确的事情似乎做了使服务器上的请求成功所需的一切,即使它需要一段时间.

谢谢.

java database jpa

17
推荐指数
2
解决办法
3万
查看次数

android:何时使用onStart(),onStop()?

我读过几个职位描述之间的区别onStart()onResume():onStart()当活动变得可见被调用,onResume()当活动准备从用户交互调用.精细.

我一直只是添加了代码onPause()onResume(),从不与困扰onStart()onStop().

任何人都可以举一些具体的例子说明你可以做些什么onStart(),对比onResume()?这同样适用于onStop()onPause(),怎么会是onStop()有用的?我必须在这里遗漏一些基本的东西.

android android-lifecycle

17
推荐指数
1
解决办法
2万
查看次数

android + gradle:每种风格的不同清单元数据

我想meta-data根据产品风格定义不同的清单属性.我试着这样做,

src/
  main/
    AndroidManifest.xml
  prod/
    AndroidManifest.xml
  dev/
    AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)

main清单是完整的,但proddev版本稀疏,仅包含元数据,

<?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)

谢谢.

android gradle android-manifest

17
推荐指数
1
解决办法
8999
查看次数

Android:是非导出的广播接收器吗?

如果我在这样的活动中注册广播接收器,

@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()接受字符串权限的形式,然后在我的清单中定义该权限,为其提供高保护级别(例如签名).那是对的吗?有更简单的方法吗?

谢谢.

android broadcastreceiver android-broadcast

13
推荐指数
1
解决办法
2667
查看次数

动作模式关闭按钮文本颜色

我看到设置动作模式"完成"/"关闭"按钮的文本颜色.这就是我尝试过的:

<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设置甚至).

有任何想法吗?谢谢.

android android-actionbar

11
推荐指数
1
解决办法
6378
查看次数

android appwidget不会从活动更新

我有一个简单的appwidget,我想在活动中发生动作时(在同一个应用程序中)更新它.在onUpdate()中,我立即更新小部件,工作正常.在我的活动中,我在appUidget中调用相同的静态更新方法,该方法在onUpdate()中调用以更新视图.小部件未更新.

我可以将代码直接跟踪到AppWidgetManager.updateAppWidget()方法中,这一切都很好,但是小部件不会更新.

我能看到的唯一可能的区别是,当从活动的上下文调用appwidget的onUpdate()方法的上下文时,传递给我的静态更新方法的上下文对象是不同的.但是,网上有很多这样的例子,所以我希望它能够起作用.

android android-appwidget

9
推荐指数
2
解决办法
6422
查看次数

JPA OneToMany,总是空着的

我有双向,一对多,多对一的关系.比如说,一个公司有很多人,一个人有一个公司,因此,在公司,

@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集合类型.

我究竟做错了什么?

jpa one-to-many

9
推荐指数
1
解决办法
4378
查看次数