小编reg*_*sxp的帖子

SQLite rawQuery selectionArgs和Integers字段

正如Android文档所说,rawQuery方法的selectionArgs参数被解析为字符串.

SQLiteDatabase.rawQuery(String sql,String [] selectionArgs)

selectionArgs:您可以在查询中的where子句中包含?s,它将被selectionArgs中的值替换.这些值将绑定为字符串.

但是今天,我遇到了一个问题,这个问题花了我很大的一天.想象一下以下查询:

SELECT * FROM TABLE_A WHERE IFNULL(COLUMN_A, 0) >= 15
Run Code Online (Sandbox Code Playgroud)

COLUMN_A是INTEGER.该表有大约10行符合该标准.在数据库编辑器上运行查询,结果始终是正确的,但是,在智能手机上,语句始终不返回任何行.

一段时间后,将查询更改为:

SELECT * FROM TABLE_A WHERE IFNULL(COLUMN_A, 0) >= '15'
Run Code Online (Sandbox Code Playgroud)

并且编辑器没有返回任何行,就像Android一样.因此,将查询更改为:

SELECT * FROM TABLE_A WHERE CAST(IFNULL(COLUMN_A, 0) as INTEGER) >= '15'
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.另一项测试是:

SELECT * FROM TABLE_A WHERE COLUMN_A >= '15'
Run Code Online (Sandbox Code Playgroud)

还,返回了正确的结果.

这似乎是一个问题,涉及Android使用IFNULL子句将参数绑定到查询(作为字符串)的方式.

那么,有人知道为什么会这样吗?如果不在查询中使用CAST,是否有任何建议可以解决这个问题?

sqlite android

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

GSON没有反序列化对外层的引用

在我的Java应用程序中,我定义了两个类,名为A,B其中B是内部类A.两者都被定义为可序列化的

public class A implements Serializable {

    int attrParent;
    List<B> items = new ArrayList<B>();

    public void setAttrParent(int attrParent) {
        this.attrParent = attrParent;
    }

    public int getAttrParent() {
        return attrParent;
    }

    public class B implements Serializable {

        private int attr;

        public void setAttr(int attr) {
            this.attr = attr;
        }

        public int getAttr() {
            return attr;
        }

        public int getSomeCalculationValue() {
            return this.attr * A.this.attrParent; // Problems occurs here
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

使用GSON序列化此对象 …

java serialization json gson deserialization

5
推荐指数
1
解决办法
1817
查看次数

在TeamCity上,Android无法读取Jacoco数据文件

我今天正在学习TeamCity Integration Server,我正在尝试使用基于Android Gradle的应用程序启用Jococo Reports.

文档向我展示了如何启用Jococo覆盖,并显示以下警告:

确保您的测试以fork = true模式运行.否则,可能无法正确收集覆盖数据.

我不知道该怎么做才能"在fork = true模式下运行我的测试".TeamCity没有生成覆盖率报告,并通过以下日志警告我:

Jacoco数据文件路径指定为C:\ TeamCity\buildAgent\temp\buildTmp\JACOCO5884661263301729570coverage\jacoco.exec但不可读.不会收集保险范围.

我认为这个警告与不在fork = true模式下运行测试有关.

所以,我的问题是:

  1. 什么fork = true模式意味着和
  2. 如何在gradle上启用它

谢谢!!!

teamcity android gradle android-gradle-plugin

5
推荐指数
1
解决办法
1551
查看次数

使用API​​13(Honeycomb)的SlidingMenu和ViewPager

我在使用Android 3.2(Honeycomb)的设备上运行SlidingMenu Library和ViewPager时遇到了一个奇怪的问题.

当我们"切换"SlidingMenu以显示隐藏在应用程序左侧的菜单时,会出现问题.当我们这样做时,ContentView和BehingContentView都停止响应触摸事件.

认为这是与我的应用程序相关的问题,我下载了最新版本的ABS和SlidingMenu库,并使用SlidingMenu附带的内置示例配置了一个新项目,令我惊讶的是,ViewPager发生了同样的行为例.

这些是我做的步骤:

  1. 使用API Level 137"WSVGA(Tablet)配置仿真器;
  2. 从GIT 下载ABSSlidingMenu ;
  3. 使用兼容性库android-support-v41(也使用android-support-v4测试)设置一个新项目;
  4. 解决了问题' getSupportActionBar()未定义 ',如下所述:https://github.com/jfeinstein10/SlidingMenu/issues/145 ;
  5. 运行' Example Application '并选择' ViewPager '示例;
  6. 无需打开菜单即可向右和向左滑动页面;
  7. 打开菜单.看到列表没有按预期滚动;
  8. 关闭菜单.看到viewpager不再响应触摸事件;

请注意,此行为仅在Android 3.2设备上报告.我们在2.x和4.x设备上运行相同的应用程序,没有这个问题.

另外,注意到从Google Play下载的示例应用程序没有此问题.

有人有什么建议吗?非常感谢!

编辑1

在真实设备上测试,并确认行为.有人有建议吗?

android android-3.0-honeycomb android-viewpager slidingmenu

3
推荐指数
1
解决办法
943
查看次数

EditText的android:nextFocusDown attibute在设置onClick时停止工作

有没有人知道为什么android:nextFocusDown attibute在我们设置onClick时停止工作?

在下面的示例中,我们定义了一些具有此属性的EditText:

<TableRow
android:weightSum="1"
android:gravity="center">
<EditText
    android:id="@+id/txtChave1"
    android:maxLength="4"
    android:gravity="center"
    android:textSize="16dp"
    android:layout_height="wrap_content"
    android:layout_weight=".23"
    android:layout_width="0dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:singleLine="true"
    android:selectAllOnFocus="true"
    android:inputType="textCapCharacters"
    android:nextFocusDown="@+id/txtChave2"></EditText>

<EditText
    android:id="@+id/txtChave2"
    android:maxLength="4"
    android:gravity="center"
    android:textSize="16dp"
    android:layout_height="wrap_content"
    android:layout_weight=".23"
    android:layout_width="0dp"
    android:layout_marginRight="5dp"
    android:singleLine="true"
    android:selectAllOnFocus="true"
    android:inputType="textCapCharacters"
    android:nextFocusDown="@+id/txtChave3"></EditText>

<EditText
    android:id="@+id/txtChave3"
    android:maxLength="4"
    android:gravity="center"
    android:textSize="16dp"
    android:layout_height="wrap_content"
    android:layout_weight=".23"
    android:layout_width="0dp"
    android:layout_marginRight="5dp"
    android:singleLine="true"
    android:selectAllOnFocus="true"
    android:inputType="textCapCharacters"
    android:nextFocusDown="@+id/txtChave4"></EditText>

<EditText
    android:id="@+id/txtChave4"
    android:maxLength="4"
    android:gravity="center"
    android:textSize="16dp"
    android:layout_height="wrap_content"
    android:layout_weight=".23"
    android:layout_width="0dp"
    android:layout_marginRight="5dp"
    android:singleLine="true"
    android:selectAllOnFocus="true"
    android:inputType="textCapCharacters"></EditText>
</TableRow>
Run Code Online (Sandbox Code Playgroud)

如上所述,当用户点击虚拟键盘上的"下一个按钮"时,焦点会按预期更改...但是,如果我们设置onClick属性,则android:nextFocusDown将不再起作用.

<EditText
android:id="@+id/txtChave1"
android:maxLength="4"
android:gravity="center"
android:textSize="16dp"
android:layout_height="wrap_content"
android:layout_weight=".23"
android:layout_width="0dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:singleLine="true"
android:selectAllOnFocus="true"
android:inputType="textCapCharacters"
android:nextFocusDown="@+id/txtChave2"
android:onClick="onClickHandler">
</EditText>
Run Code Online (Sandbox Code Playgroud)

有什么建议?

非常感谢!

android android-layout android-edittext

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

Java BigDecimal舍入错误

我有以下函数用于舍入Java中的double值:

public static double round(double d, int decimalPlace) {

    BigDecimal bd = new BigDecimal(Double.toString(d));
    bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
    return bd.doubleValue();
}
Run Code Online (Sandbox Code Playgroud)

作为输入,此函数正在接收以下值:

double d = 7.3149999999999995;
int decimalPlace = 2
Run Code Online (Sandbox Code Playgroud)

但是,当函数返回时,返回的值是7.31,而不是7.32.我搜索了文档,看看为什么bd.SetScale与这种行为有关,但没有成功.

有没有人能解释为什么会这样?非常感谢!!

java android rounding bigdecimal

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

显示对话框时出现BadTokenException

我在Android应用程序上有一个活动,它启动与我的服务器的同步过程.此过程消耗大量内存和处理,并且需要一些时间才能完成.

该过程完成后,将向用户显示AlertDialog,显示该过程是否已成功完成.

如果我离开活动前景,一切都会按预期工作.但是,有时,当我离开应用程序时,后台进程继续其工作,但是,当我返回到应用程序时,它崩溃并出现以下错误:

android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌android.os.BinderProxy@4086ea48无效; 你的活动在运行吗?

这个错误可能是因为操作系统破坏了活动吗?如果是,那么进程(在另一个线程上运行)如何继续运行?而且,如果我们确认问题是由活动的破坏引起的,我怎么能处理这种情况,避免崩溃并向用户显示对话框?

这是一些代码......

public class ActSincronizacao extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.sincronizacao);

        //Prepare so starts the process
        [...]

        // Defines a Handler that will be called when the process gets finished
        oSocketEngine.addProgressUpdateFinishListener(new ProgressUpdateFinishListener() {

            @Override
            public void ProgressUpdateFinishOccurred(final ProgressUpdateFinish evt) {

                //Do some processing that doesn´t envolve UI
                [...]

                // Process that envolves UI
                runOnUiThread(new Runnable() {

                    public void run() {

                        if ((boolean)evt.getArgs().getResult()) {

                            //If the process …
Run Code Online (Sandbox Code Playgroud)

android dialog android-alertdialog android-activity

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

Android - 构建支持附加组件的应用程序

在.NET上,我可以使用"反射"在运行时加载DLL库.这允许我为我的应用程序构建一些附加组件.

在Android上,有什么办法可以执行类似的操作吗?我想制作一个插件,安装后,可以从我的Android应用程序调用.

我的第一个想法是为APK这个附加组件构建另一个.然后,我的应用程序应遍历已安装的软件包以查看是否存在加载项.

之后,我如何加载该包(以及它拥有的活动)并在我的应用程序中使用它?要考虑的另一个细节是add-on需要访问主应用程序的同一数据库.

有谁知道我怎么能这样做?

非常感谢!

android add-on

0
推荐指数
1
解决办法
3582
查看次数

Oracle编号路由问题

我们需要Round Half-UP以下NUMBER:

28.854623
Run Code Online (Sandbox Code Playgroud)

所以,'预期'的步骤是:

1) 28.854623
2) 28.85462
3) 28.8546
4) 28.855
5) 28.86
Run Code Online (Sandbox Code Playgroud)

但是,ROUND函数的结果似乎是错误的:

SELECT ROUND(28.854623, 2) FROM DUAL;
Result> 28.85
Run Code Online (Sandbox Code Playgroud)

如果我们以3位小数位执行,结果如预期:

SELECT ROUND(28.854623, 3) FROM DUAL;
Result> 28.855
Run Code Online (Sandbox Code Playgroud)

如果我们ROUND到3个地方,然后到2个地方,结果也是预期的:

SELECT ROUND (ROUND (28.854623, 3), 2) FROM DUAL
Result> 28.86
Run Code Online (Sandbox Code Playgroud)

有谁能解释我为什么会这样做?是不是ROUND函数在(N + 1)十进制位置上产生TRUNC,然后,舍入结果,如下所示:

ROUND(TRUNC(VALUE, N+1), N)
Run Code Online (Sandbox Code Playgroud)

谢谢!

oracle rounding

0
推荐指数
1
解决办法
654
查看次数

Spring如何支持多种数据库引擎?

I\xe2\x80\x99m 构建一个支持各种数据库引擎(MySQL、PostgreSQL、Oracle、SQL Server)的 Spring Boot 应用程序。

\n\n

安装应用程序时,系统将提示用户选择要使用的数据库,之后将创建所有表。我认为我应该将用户选项保存在某处,然后使用它来选择我的应用程序将用于实例化存储库的正确引擎。

\n\n

我在谷歌上搜索了一些参考资料或最佳实践,我应该遵循这些参考资料或最佳实践来实现这一点,但\xe2\x80\x99无法找到(也许我\xe2\x80\x99m搜索了错误的术语 - 抱歉)。

\n\n

您有任何资源可以指引我正确的方向吗?

\n\n

多谢!!!

\n

spring database-connection spring-boot

0
推荐指数
1
解决办法
1986
查看次数