从SQLite DB活动中调用首选项

时间:2016-12-13 08:12:32

标签: android sqlite preferenceactivity

我正在开发一个字典应用程序。我有以下代码显示20个最近的历史字。

public List<Bean> getHistoryWords() {

        SQLiteDatabase db = initializer.getReadableDatabase();

        String sql = "SELECT * FROM " + HISTORY_NAME +
                " WHERE " + STATUS + " ORDER BY " + STATUS + " DESC LIMIT 20" ;

        Cursor cursor = db.rawQuery(sql, null);

        List<Bean> wordList = new ArrayList<Bean>();
        while(cursor.moveToNext()) {
            int id = cursor.getInt(0);
            String english = cursor.getString(1);
            String bangla = cursor.getString(2);
            String status = cursor.getString(3);
            wordList.add(new Bean(id, english, bangla, status));
        }

        cursor.close();
        db.close();
        return wordList;
    }

我想为用户提供一个选项,可以将历史记录项的数量从LIMIT 20更改为LIMIT 50LIMIT 100Preferences

我关注this tutorial,但我被困在&#34; 5)保存/阅读数据&#34;。我试图将SharedPreferences放在getHistoryWords下,但我收到错误cannot resolve getBaseContext

public List<Bean> getHistoryWords() {
    SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

我应该把代码放在哪里?

1 个答案:

答案 0 :(得分:1)

有一种最简单的方法。 首先,创建扩展Application的YourAppName 将Context声明为static并在Application的onCreate方法上初始化它,

public YourApp extends Application {

    private static Context context;

    public void onCreate() {
        super.onCreate();
        YourApp.context = getApplicationContext();
    }

    public static Context getAppContext() {    
        return YourApp.context;
    }
}

在Manifest.xml中声明YourApp

应用程序代码中的

android:name="com.yourpackagename.app.YourApp"

现在,您可以获得上下文,您需要的每个地方,

 YourApp.getAppContext()

我希望这会对你有所帮助。