如何在PreferenceActivity活动中进行数据库访问?

时间:2015-12-06 16:22:19

标签: android

在android中,我有一个派生自PreferenceActivity的类,以便设置首选项并进行一些管理。其中之一是重置数据库,即删除数据库中的每个项目并创建一个空项目。

现在,由于某些原因,数据库类(更具体地说,SQLiteOpenHelper)需要Context。但看起来类PreferenceActivity无法转换为Context!因此,编译失败了。

那么如何获得Context?或者如何以不同的方式访问数据库?还是我完全做错了?

以下是代码:

public class UserSettingActivity extends PreferenceActivity{

    private Preference myPreference;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
        myPreference = findPreference("reset");
        myPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
            public boolean onPreferenceClick(Preference arg0) {
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(UserSettingActivity.this);
                alertDialog.setMessage("Are you sure to delete the database?");
                alertDialog.setCancelable(true);
                alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        final DBAdapter db = new DBAdapter(this);
                        db.resetDatabase();

                    } });
                alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    } });
                alertDialog.show();
                return false;
            }
        });

    }

}

旁注:代码包含已弃用的代码说明。我会问一个单独的问题来解决这个问题......

1 个答案:

答案 0 :(得分:1)

使用UserSettingActivity.this。这是可能的,因为PreferenceActivity来自Context,请参见http://developer.android.com/reference/android/preference/PreferenceActivity.html