我正在尝试从AndroidAnnotations 3.3.2升级到4.0.0版本,并且在升级后无法使ORMLite正常工作。
升级到4.0.0并构建项目后,收到错误消息:
“错误:找不到符号类OrmLiteDao”
并且此代码部分以红色标记:

@OrmLiteDao(helper = DatabaseHelper.class)
ContactDao mContactDao;


我与AndroidAnnotations 3.3.2完美配合的旧类看起来像这样:

public class ContactService {

    private final String TAG = getClass().getSimpleName();

    @RootContext
    Context ctx;

    @OrmLiteDao(helper = DatabaseHelper.class)
    ContactDao mContactDao;

    public Contact getContact(Integer contactId) throws ItemNotFoundException, SQLException {
        Contact contact = mContactDao.queryForId(contactId);
        if (contact == null) {
            Log.e(TAG, "Contact not found in database");
            throw new ItemNotFoundException();
        }

        return contact;
    }

    public List<Contact> getContacts() throws ItemNotFoundException, SQLException {
        List<Contact> contact = mContactDao.queryForAll();
        if (contact == null) {
            Log.e(TAG, "Contacts not found in database");
            throw new ItemNotFoundException();
        }

        return contact;
    }

    public Contact createContact(Contact contact) throws SQLException {
        try {
            mContactDao.create(contact);
        } catch (SQLException e) {
            Log.e(TAG, e.getLocalizedMessage());
        }

        Log.d(TAG, "New Contact ID: " + contact.getId());

        return contact;
    }

}


我的ContactDao类相对为空,因为我在ContactService类中都有所有方法:

public class ContactDao extends BaseDaoImpl<Contact, Integer> {

    public ContactDao(Class<Contact> dataClass) throws SQLException {
        super(dataClass);
    }

    public ContactDao(ConnectionSource connectionSource, Class<Contact> dataClass) throws SQLException {
        super(connectionSource, dataClass);
    }

    public ContactDao(ConnectionSource connectionSource, DatabaseTableConfig<Contact> tableConfig) throws SQLException {
        super(connectionSource, tableConfig);
    }

    public ContactDao(ConnectionSource connectionSource) throws SQLException {
        super(connectionSource, Contact.class);
    }
}


根据AndroidAnnotations Wiki(https://github.com/excilys/androidannotations/wiki/Ormlite),我必须将代码更改为此:

@EActivity
public class MyActivity extends Activity {

    @OrmLiteDao(helper = DatabaseHelper.class)
    void setUserDao(UserDao userDao){
        // do something with userDao
    }

}


我尚不清楚如何将上面的代码调整为新格式(如下),以使其能够与AndroidAnnotations 4.0.0一起使用。谁能告诉我如何调整代码使其与AndroidAnnotations 4.0.0兼容?

谢谢。

最佳答案

您不必按照在上一个示例中编写的方式更改代码。在这种情况下,您正在使用方法注入,但这是一种替代方法,字段注入在AA 4.0.0中仍然有效。

但是,您必须添加更多依赖项,并为新的程序包名称调整导入。

build.gradle:

compile "org.androidannotations:androidannotations-api:4.0.0"
apt "org.androidannotations:androidannotations:4.0.0"
compile "org.androidannotations:ormlite-api:4.0.0"
apt "org.androidannotations:ormlite:4.0.0"


使用@OrmLiteDao的.java文件:

import org.androidannotations.ormlite.annotations.OrmLiteDao;


您可以阅读这些说明here

关于android - 如何调整适用于AndroidAnnotations 4.0.0的AndroidAnnotations 3.x兼容ORMLite代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36341050/

10-10 23:12