如何点击调用sqlite方法的首选项?

时间:2017-09-15 17:32:03

标签: android sqlite

在我的首选项页面中,我希望在任何给定时间删除存储在数据库中的所有信息。

点击首选项后,如何设置onclick事件? onClick应该导致从我的sqlite数据库调用delete方法。我试过在网上看,但对我来说没什么用。这不是重复的,因为我已经尝试了它并且它不起作用,因为它被折旧并且回调到java没有其他答案

你能否告诉我我将使用的代码,因为我不明白该怎么做?

preferences.xml(for onClick)

<Preference android:title="@string/delete_all_expense"
    android:summary="@string/delete_all_expense_detail"
    android:key="delete_all_expense"
    />

PreferenceActivity.java

import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.support.v7.app.AppCompatActivity;

public class PreferencesActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();

        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    }

    @Override
    public boolean onSupportNavigateUp() {
        finish();
        return true;
    }



    public static class MyPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
        }
    }

}

删除方法表单DatabaseHelper(如果需要)

public void deleteAllExpense(){
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_NAME,null,null);
    db.execSQL("delete from "+ TABLE_NAME);
    db.execSQL("TRUNCATE table" + TABLE_NAME);
    db.close();
}

1 个答案:

答案 0 :(得分:0)

如果这对您不起作用,您可以像这样实现自己的偏好:

public class CustomPreference extends Preference implements Preference.OnPreferenceClickListener {

    public CustomPreference(Context context, AttributeSet attrs) {
        setOnPreferenceClickListener(this)
    }


    public boolean onPreferenceClick(Preference pref) {
        //delete your data
        return true
    }
}

使用以下内容将其添加到.xml布局中

<your.package.name.CustomPreference
    etc.../>