2013-01-16 23 views
5

'da iç sınıfı nasıl tanımlarım android'de SQLite öğreniyorum. SQLite için developer.android.com'u yeniden yayınlarım. Ama kodu okurken biraz kafa karışıklığım var. Onlar FeedReaderContract sınıf başlatmasını önlemek için FeedReaderContract yapıcısı yazdım ama onlar FeedReaderContract yerde sınıf ve FeedReaderContract ve FeedEntry arasındaki ilişkiyi tanımlamaz. Ben bahsediyorumFeedReaderContract'ın amacı nedir ve OpenHelper Sınıfı

Here's link. Ben kod sağlarım. Openhelper sınıfında iç sınıfı nasıl tanımlayabilirim. Herkes bana iyi yolu önerebilir mi?

Örneğin, bu pasajı tek bir tablo için tablo adı ve sütun adlarını tanımlar:

public static abstract class FeedEntry implements BaseColumns 
{ 
    public static final String TABLE_NAME = "entry"; 
    public static final String COLUMN_NAME_ENTRY_ID = "entryid"; 
    public static final String COLUMN_NAME_TITLE = "title"; 
    public static final String COLUMN_NAME_SUBTITLE = "subtitle"; 
    ... 
} 

, yanlışlıkla sözleşme sınıfını nesnelleştirilmesinin birisini engellemek onu boş bir yapıcı vermek.

//Prevents the FeedReaderContract class from being instantiated. 
private FeedReaderContract() {} 
+0

Sorunuzu anlayamıyorum. Hangi kodu açıklamak istersiniz? Bağladığınız makaledeki kod makalede açıklanmıştır. (Örneğin, makalede, alıntı yaptığınız ilk kod bölümü açıklanmaktadır, "bu snippet, tek bir tablo için tablo adını ve sütun adlarını tanımlar. Daha fazla ne bilmek istersiniz?) –

+0

Soru başlığınıza bir anlam verdim. Sorunuzu uygun değilse geri almayı çekinmeyin. –

cevap

4

Ben anlıyorum:

public static class FeedReaderContract{ 

    // Prevents the FeedReaderContract class from being instantiated. 
    private FeedReaderContract() {} 

    //The FeedEntry table definition 
    public static abstract class FeedEntry implements BaseColumns { 
     public static final String TABLE_NAME = "entry"; 
     public static final String COLUMN_NAME_ENTRY_ID = "entryid"; 
     public static final String COLUMN_NAME_TITLE = "title"; 
     public static final String COLUMN_NAME_SUBTITLE = "subtitle"; 
     ... 
    } 

    //more tables definition 
} 

Yani sözleşme instatiate olamaz ama tüm iç sınıflar sabitleri erişebilirler. FeedReaderContract sınıfta iç sınıfın

private static final String SQL_CREATE_ENTRIES = 
"CREATE TABLE " + FeedReaderContract.FeedEntry.TABLE_NAME + " (" + 
FeedReaderContract.FeedEntry._ID + " INTEGER PRIMARY KEY," //continues 

Erişim FeedEntry sabitleri (TABLE_NAME ve _ID): örnek hattı gibi.

Yardım edin.