无法访问其他类的字符串?

时间:2015-06-06 02:02:59

标签: java android sqlite

我正在关注android网站上的教程。 http://developer.android.com/training/basics/data-storage/databases.html#DefineContract

在FeedReaderDbHelper中,SQL_DATA_ENTRIES以红色点亮。如何从FeedReaderDbHelper访问它?我是否选择了getter和setter,还是有更好的方式?

// FeedReaderDbHelper

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Neil Armstrong on 6/5/2015.
 */
public class FeedReaderDbHelper extends SQLiteOpenHelper  {
    // If you change the database schema, you must increment the database version.
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "FeedReader.db";

    public FeedReaderDbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_ENTRIES);
    }
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // This database is only a cache for online data, so its upgrade policy is
        // to simply to discard the data and start over
        db.execSQL(SQL_DELETE_ENTRIES);
        onCreate(db);
    }
    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        onUpgrade(db, oldVersion, newVersion);
    }
}

// FeedReaderContract

import android.provider.BaseColumns;

/**
 * Created by Neil Armstrong on 6/5/2015.
 */
public final class FeedReaderContract {
    // To prevent someone from accidentally instantiating the contract class,
    // give it an empty constructor.
    public FeedReaderContract() {}

    /* Inner class that defines the table contents */
    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";
        private static final String TEXT_TYPE = " TEXT";
        private static final String COMMA_SEP = ",";
//this is what I am trying to get.
        private static final String SQL_CREATE_ENTRIES =
                "CREATE TABLE " + FeedEntry.TABLE_NAME + " (" +
                        FeedEntry._ID + " INTEGER PRIMARY KEY," +
                        FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
                        FeedEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP +
         // Any other options for the CREATE command
                " )";

        private static final String SQL_DELETE_ENTRIES =
                "DROP TABLE IF EXISTS " + FeedEntry.TABLE_NAME;

    }
}

1 个答案:

答案 0 :(得分:0)

当您在private String SQL_CREATE_ENTRIES类中使用FreeReaderContract变量时,应使用getter和setter来检索/编辑它。

或者您可以将它们打包为私有并使用

访问它们

FreeREaderContract.SQL_CREATE_ENTRIES

来自FreeReaderDbHelper类的

因为它们是static个变量。 (假设它们在同一个包中)