我正在尝试使用ActiveAndroid来处理我的应用程序中的数据库.
这是我的模型类:
package ro.adrian.trivia.datamodel; import java.io.Serializable; import ro.adrian.trivia.database.TriviaSQLiteHelper; import com.activeandroid.Model; import com.activeandroid.annotation.Column; import com.activeandroid.annotation.Table; @Table(name = TriviaSQLiteHelper.TABLE_USERS) public class User extends Model implements Serializable, Comparable{ /** * */ private static final long serialVersionUID = 1L; @Column(name = TriviaSQLiteHelper.COLUMN_USER_NAME) private String username; @Column(name = TriviaSQLiteHelper.COLUMN_FIRST_NAME) private String first_name; @Column(name = TriviaSQLiteHelper.COLUMN_LAST_NAME) private String last_name; @Column(name = TriviaSQLiteHelper.COLUMN_PASSWORD) private String password; public User(){ super(); this.username=""; this.first_name=""; this.last_name=""; this.password=""; } public User(String username, String password, String firstName, String lastName){ super(); this.username = username; this.password = password; this.first_name = firstName; this.last_name = lastName; } public String getFirst_name() { return first_name; } public void setFirst_name(String first_name) { this.first_name = first_name; } public String getLast_name() { return last_name; } public void setLast_name(String last_name) { this.last_name = last_name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString(){ return this.first_name + " " + this.last_name; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Override public int compareTo(User arg0) { return this.username.compareTo(arg0.username); } }
以下是插入新用户的方法:
public User insertUser(String username, String password, String firstName, String lastName){ User newUser = new User(username, password, firstName, lastName); newUser.save(); return newUser; }
这是我的表现:
在这里,我尝试插入一个新用户:
UserDataSource.getInstance().insertUser("adi", "123", "Adrian", "Olar");
这是logcat:
01-02 14:56:08.818: E/AndroidRuntime(10129): FATAL EXCEPTION: main 01-02 14:56:08.818: E/AndroidRuntime(10129): Process: ro.adrian.trivia, PID: 10129 01-02 14:56:08.818: E/AndroidRuntime(10129): java.lang.NullPointerException 01-02 14:56:08.818: E/AndroidRuntime(10129): at com.activeandroid.Cache.getTableInfo(Cache.java:146) 01-02 14:56:08.818: E/AndroidRuntime(10129): at com.activeandroid.Model.(Model.java:50) 01-02 14:56:08.818: E/AndroidRuntime(10129): at ro.adrian.trivia.datamodel.User. (User.java:36) 01-02 14:56:08.818: E/AndroidRuntime(10129): at ro.adrian.trivia.database.UserDataSource.insertUser(UserDataSource.java:31) 01-02 14:56:08.818: E/AndroidRuntime(10129): at ro.adrian.trivia.fragments.LoginFragment$1.onClick(LoginFragment.java:31) 01-02 14:56:08.818: E/AndroidRuntime(10129): at android.view.View.performClick(View.java:4438) 01-02 14:56:08.818: E/AndroidRuntime(10129): at android.view.View$PerformClick.run(View.java:18422) 01-02 14:56:08.818: E/AndroidRuntime(10129): at android.os.Handler.handleCallback(Handler.java:733) 01-02 14:56:08.818: E/AndroidRuntime(10129): at android.os.Handler.dispatchMessage(Handler.java:95) 01-02 14:56:08.818: E/AndroidRuntime(10129): at android.os.Looper.loop(Looper.java:136) 01-02 14:56:08.818: E/AndroidRuntime(10129): at android.app.ActivityThread.main(ActivityThread.java:5017) 01-02 14:56:08.818: E/AndroidRuntime(10129): at java.lang.reflect.Method.invokeNative(Native Method) 01-02 14:56:08.818: E/AndroidRuntime(10129): at java.lang.reflect.Method.invoke(Method.java:515) 01-02 14:56:08.818: E/AndroidRuntime(10129): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 01-02 14:56:08.818: E/AndroidRuntime(10129): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 01-02 14:56:08.818: E/AndroidRuntime(10129): at dalvik.system.NativeStart.main(Native Method)
老实说,我不知道我的代码有什么问题......任何建议都非常感谢!
我想您忘记在清单中指向ActiveAndroid应用程序类.您的应用标签应包含以下内容:
<application android:name="com.activeandroid.app.Application" ...>
资源