Attempt to invoke virtual method 'java.lang.String com.activeandroid.TableInfo.getIdName()' on a nul

本文介绍了使用ActiveAndroid框架时遇到的表创建失败问题及解决方案。主要包括正确配置AndroidManifest.xml中的AA_MODELS元数据,确保定义了正确的实体类,并在实体类构造函数中调用super()方法。

Attempt to invoke virtual method ‘java.lang.String com.activeandroid.TableInfo.getIdName()’ on a null object reference

我们在学习 ActiveAndroid 时会报出这样的错误,对于初学者来说报出这样的错误,比较头疼。这里TableInfo 应该是表名, 但是用命令行打开db看, 是没有创建表的。上网查了一下:

第一步:我们在AndroidManifest.xml配置 meta-data 时除了 AA_DB_NAME 以及AA_DB_VERSION还需要将定义的表的实体类加上:
xml
<application... >
<meta-data
android:name="AA_MODELS"
android:value="myfullpackage.myentity1, myfullpackage.myentity2
"
/>

否则生成的db 是没有 我们自己定义的表的。

第二步
在定义表类时, 在空参数的构造函数加上 super();

如果之后发现 报错ActiveAndroid SQLite exception ‘No such table’

解决办法: AA_DB_VERSION 将版本加增加1,或者卸载app重新安装就好了。
希望对你有帮助^_^

`java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference` 这个错误表明在尝试对一个 `null` 对象调用 `split` 方法。`split` 是 `String` 类的实例方法,当调用它的 `String` 对象为 `null` 时,就会抛出 `NullPointerException`。 以下是几种可能的解决办法: ### 检查对象是否为 `null` 在调用 `split` 方法之前,先检查字符串对象是否为 `null`。示例代码如下: ```java public class Main { public static void main(String[] args) { String str = null; if (str != null) { String[] parts = str.split(","); // 处理分割后的结果 } else { // 处理字符串为 null 的情况 System.out.println("字符串为 null,无法进行分割。"); } } } ``` ### 提供默认值 如果字符串可能为 `null`,可以为其提供一个默认值,避免 `null` 引用。示例代码如下: ```java public class Main { public static void main(String[] args) { String str = null; String nonNullStr = str != null ? str : ""; String[] parts = nonNullStr.split(","); // 处理分割后的结果 } } ``` ### 从可靠的数据源获取字符串 确保从数据源获取的字符串不是 `null`。例如,在从文件、数据库或网络获取字符串时,要检查返回值是否为 `null`。示例代码如下: ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) { String line; while ((line = br.readLine()) != null) { String[] parts = line.split(","); // 处理分割后的结果 } } catch (IOException e) { e.printStackTrace(); } } } ``` ### 进行空值检查的工具方法 可以创建一个工具方法来处理字符串分割,在方法内部进行空值检查。示例代码如下: ```java public class StringUtils { public static String[] safeSplit(String str, String regex) { return str != null ? str.split(regex) : new String[0]; } } public class Main { public static void main(String[] args) { String str = null; String[] parts = StringUtils.safeSplit(str, ","); // 处理分割后的结果 } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值