在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;
}
});
}
}
旁注:代码包含已弃用的代码说明。我会问一个单独的问题来解决这个问题......
答案 0 :(得分:1)
使用UserSettingActivity.this
。这是可能的,因为PreferenceActivity来自Context
,请参见http://developer.android.com/reference/android/preference/PreferenceActivity.html