2016-03-31 26 views
1

AndroidAnnotations 3.3.2'den 4.0.0 sürümüne yükseltmeye çalışıyorum ve ORMLite'in yükseltmeden sonra çalışmaya başlamasında sorun yaşıyorum. Ben 4.0.0 yükseltme ve şu hata mesajını alıyorum projeyi inşa sonra : "hata: sembol sınıf OrmLiteDao bulamıyorum" Ve bu kod parçası kırmızıyla işaretlenmiş:AndroidAnnotations nasıl ayarlanır? Android için 3.x uyumlu ORMLite koduAyrıntılar 4.0.0

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

Eski sınıf (es) AndroidAnnotations 3.3.2 ile mükemmel çalıştığını şöyle görünür:

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; 
    } 

} 

Ve ben tüm ContactService sınıfında yöntemleri var çünkü benim ContactDao sınıf nispeten boş:

AndroidAnnotations Wiki göre

(https://github.com/excilys/androidannotations/wiki/Ormlite) Bu kodu değiştirmek zorunda: Ben sırayla yeni biçimde (aşağıda) yukarıda kodumu ayarlamak için ne bana net değil

@EActivity 
public class MyActivity extends Activity { 

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

} 

AndroidAnnotations 4.0.0 ile çalışmasını sağlamak için. Kimse AndroidAnnotations 4.0.0 ile uyumlu olması için kodumu nasıl ayarlamam gerektiğini gösterebilir mi?

Teşekkür ederiz.

+1

'@ OrmLiteDao 'ormlite eklentisinin bir parçası olduğundan (bağlandığınız wiki sayfasında açıklandığı gibi), eklentiyi bağımlılık olarak eklediniz mi? Yani, 'build.gradle' 'org.androidannotations: ormlite: 4.0.0' 'derlediniz mi? 3.3.2 sürümünde, ek açıklama hala ana api'nin bir parçasıydı, ancak proje o zamandan beri daha modüler bir yaklaşım benimsedi. –

cevap

1

Kodu, son örnekte yazdığınız şekilde değiştirmeniz gerekmez. Buna göre, yöntem enjeksiyonu kullanıyorsunuz, ancak bu alternatif bir alan enjeksiyonu hala AA 4.0.0'da çalışıyor. Ancak, daha fazla bağımlılık eklemeniz ve yeni paket adı için ithalatınızı ayarlamanız gerekir.

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" 

.java @OrmLiteDao kullanılır dosyaları:

import org.androidannotations.ormlite.annotations.OrmLiteDao; 

bu talimatları here okuyabiliyordu.

+0

Mükemmel! Bu 4 satırı build.gradle dosyasına ekleyerek ve ilgili sınıftaki ithalatı değiştirerek problemimi çözdüm! Teşekkürler! –