andriod中使用xutils出现java.lang.RuntimeException: Unable to start activity ComponentInfo

来源:互联网 发布:peterson算法 编辑:程序博客网 时间:2024/06/05 17:33

以前都是把找到的网上的资料保存到书签,现在觉得还是应该放在博客里...

这几天从零开始学安卓 还是背负着接手一个项目的使命 我也是真真的伤到了 各种问题扑面而来 人生么

今天是在项目中使用了xutils出现错误

05-11 10:15:20.072: W/System.err(4080): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hctec.rfidandriod/com.hctec.rfidandriod.MainActivity}: java.lang.RuntimeException: field 'id' not found
05-11 10:15:20.073: W/System.err(4080): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
05-11 10:15:20.073: W/System.err(4080): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
05-11 10:15:20.073: W/System.err(4080): at android.app.ActivityThread.access$600(ActivityThread.java:162)
05-11 10:15:20.074: W/System.err(4080): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
05-11 10:15:20.074: W/System.err(4080): at android.os.Handler.dispatchMessage(Handler.java:107)
05-11 10:15:20.074: W/System.err(4080): at android.os.Looper.loop(Looper.java:194)
05-11 10:15:20.074: W/System.err(4080): at android.app.ActivityThread.main(ActivityThread.java:5392)
05-11 10:15:20.075: W/System.err(4080): at java.lang.reflect.Method.invokeNative(Native Method)
05-11 10:15:20.075: W/System.err(4080): at java.lang.reflect.Method.invoke(Method.java:525)
05-11 10:15:20.075: W/System.err(4080): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
05-11 10:15:20.075: W/System.err(4080): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
05-11 10:15:20.075: W/System.err(4080): at dalvik.system.NativeStart.main(Native Method)
05-11 10:15:20.076: W/System.err(4080): Caused by: java.lang.RuntimeException: field 'id' not found
05-11 10:15:20.076: W/System.err(4080): at com.lidroid.xutils.db.table.TableUtils.getId(TableUtils.java:122)
05-11 10:15:20.076: W/System.err(4080): at com.lidroid.xutils.db.table.TableUtils.getId(TableUtils.java:151)
05-11 10:15:20.077: W/System.err(4080): at com.lidroid.xutils.db.table.Table.<init>(Table.java:49)
05-11 10:15:20.077: W/System.err(4080): at com.lidroid.xutils.db.table.Table.get(Table.java:65)
05-11 10:15:20.077: W/System.err(4080): at com.lidroid.xutils.DbUtils.tableIsExist(DbUtils.java:714)
05-11 10:15:20.077: W/System.err(4080): at com.lidroid.xutils.DbUtils.createTableIfNotExist(DbUtils.java:703)
05-11 10:15:20.077: W/System.err(4080): at com.lidroid.xutils.DbUtils.save(DbUtils.java:215)
05-11 10:15:20.077: W/System.err(4080): at com.hctec.util.DatabaseUtil.addSettingInfo(DatabaseUtil.java:23)
05-11 10:15:20.078: W/System.err(4080): at com.hctec.rfidandriod.MainActivity.onCreate(MainActivity.java:25)
05-11 10:15:20.078: W/System.err(4080): at android.app.Activity.performCreate(Activity.java:5122)
05-11 10:15:20.078: W/System.err(4080): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1084)
05-11 10:15:20.078: W/System.err(4080): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)

看第一眼觉得很诡异 为什么是找不到ID呢 我注册了mainactivity啊 代码如下

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.hctec.rfidandriod.MainActivity"             
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <activity android:name="com.hctec.rfidandriod.BaseActivity"></activity>
        <activity android:name="com.hctec.rfidandriod.SettingActivity"></activity>
    
    </application>

后来才发现我使用了xutils中对数据库的操作中查找的操作 代码如下

    /**
     * 查找已有配置信息
     */
    public SettingInfo findFirstSettingInfo() {
    SettingInfo settingInfo = null;
    try {
    settingInfo = db.findFirst(Selector.from(SettingInfo.class).where("areaCode","!=", null));
    } catch (DbException e) {
    System.out.println("查找配置信息出错");
    e.printStackTrace();
    }
    return settingInfo;
    }

但是我的SettingInfo类中并没有指明areaCode是表中的主键(这里我不知道专业的表达方法是什么 我理解为是把他与表中主键建立关联)代码如下

public class SettingInfo {

@Id
private String  areaCode;    //区域编码


一定不要忘了@Id

0 0
原创粉丝点击