布尔值在 Android 中始终转换为零

Boolean always convert to zero in Android

提问人:Kim HJ 提问时间:7/8/2023 最后编辑:Kim HJ 更新时间:7/11/2023 访问量:68

问:

我正在使用 Android Studio 花栗鼠 2021.2.1 补丁 1 Android Studio 花栗鼠 |2021.2.1 补丁 1 目标 SDK 31,最低 SDK 23

我正在从如下所示的 Web 服务导入数据: 我添加了最后七个布尔值。呼叫以前就在那里,并且一直有效,但我添加的七个总是返回 0。

“accountnum”:“9922264”,“oncall”:true,“oncalldate”:null,“routepausefrom”:null,“routepauseto”:null,“mon”:true,“tue”:true,“温”:null,“thu”:null,“fri”:null,“sat”:null,“sun”:null

然后我添加到sqlite数据库;

cusdatasource.createCustomer(Integer.parseInt(customerResult.d.results.get(i).accountnumStr),(customerResult.d.results.get(i).oncallBool) ? 1:0, OnCallDate, FromDate, ToDate,(customerResult.d.results.get(i).monBool) ? 1:0,(customerResult.d.results.get(i).tueBool) ?1:0, (customerResult.d.results.get(i).wenBool) ? 1:0,(customerResult.d.results.get(i).thuBool) ? 1:0,(customerResult.d.results.get(i).friBool) ?1:0, (customerResult.d.results.get(i).satBool) ? 1:0,(customerResult.d.results.get(i).sunBool) ?1:0);

下面是添加到数据库之前填充的变量。

呼叫 = 1 OnCallDate = “ ” cusurl = “” vacfrom = “ ” vacto = “ ” 星期一 = 0 星期二 = 0 星期三 = 0 星期四 = 0 星期五 = 0 星期六 = 0 星期日 = 0

除了第一个 onCall 之外,所有布尔值都转换为 1 或 0,具体取决于它是 true 还是 false,但所有其他布尔值始终转换为 0。 我花了几个小时寻找一些东西,但是所有变量的所有设置对于工作变量和不工作变量都是相同的。

感谢您的帮助。

android-sqlite 布尔值操作

评论

0赞 ADM 7/8/2023
您需要单独检查值.. 在这种情况下,如果为 null,则将其转换为 0,但如果它不是 null,则始终将其转换为 1。您还必须考虑 值 ,因为该值也可以是 true 或 false。(customerResult.d.results.get(i).oncallBool) ? 1:0oncallBool
0赞 Kim HJ 7/10/2023
onCallBool 是唯一一个始终正确转换的人。如果为 null,则为 0,如果为 false,则为 0,如果为 true,则为 1。当 true 时,其他任何一个都不会转换为 1,它们始终为 0。

答:

0赞 Kim HJ 7/11/2023 #1

我发现了问题,具有 SerializedName 的 Customer 类区分大小写,因此即使 Web 服务的结果也是正确的,SerializedName 没有找到名称,因为我有 Mon 而不是 mon。