Android 4.4 SQLite不更新

时间:2014-08-13 17:29:18

标签: android sqlite android-4.4-kitkat

我的Android应用程序中有一个功能齐全的SQLite数据库,它在我的测试设备(Android 4.0 - 4.3)上运行良好,但我有一个运行KitKat的用户,他们无法更新数据库。为了总结我的代码,我让用户单击一个开关,然后询问是否要进行更改,如果是,则更新数据库表。

以下是我从Activity:

调用数据库
 StatusData statusData;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_macro);

    statusData = new StatusData(getBaseContext());

 }

 @Override
public void onClick(View v) {
    AlertDialog.Builder alertDialogBuilder;
    AlertDialog alertDialog;
    switch (v.getId())
        case R.id.switchOffSeason:
        String season,
        seasonHeading = "";
        alertDialogBuilder = new AlertDialog.Builder(this);

        // set dialog message
        if (switchOffSeason.isChecked()) {
            season = "This will delete all your current settings and default to the standard diet.  This cannot be undone";
            seasonHeading = "Set Standard Diet";
        } else {
            season = "This will delete all your current settings and default to Off-Season diet.  This cannot be undone.";
            seasonHeading = "Set Off-Season Diet";
        }
        // set title
        alertDialogBuilder.setTitle(seasonHeading);

        alertDialogBuilder
                .setMessage(season)
                .setCancelable(false)
                .setPositiveButton("Ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {

                                String passedTask = "offSeason";
                                dropTable task = new dropTable(passedTask);
                                task.execute(passedTask);

                            }
                        })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                if (switchOffSeason.isChecked()) {
                                    switchOffSeason.setChecked(false);
                                } else {
                                    switchOffSeason.setChecked(true);
                                }
                                dialog.cancel();
                            }
                        });

        alertDialog = alertDialogBuilder.create();


 private class dropTable extends AsyncTask<String, Void, String> {
    String task;

    public dropTable(String passedTask) {
        super();
        task = passedTask;
    }

    @Override
    protected String doInBackground(String... params) {

        if (task.equals("reset")) {
            String offSeason = statusData.profileTable()[10];
            profileTable = statusData.profileTable();

            statusData.dropReloadMacrosTable(new String[] {
                    profileTable[11], profileTable[12], profileTable[13],
                    profileTable[14], profileTable[15], profileTable[16],
                    profileTable[17], offSeason });
        } else if (task.equals("offSeason")) {
            if (switchOffSeason.isChecked()) {
                statusData.updateFieldProfile(new String[] { "offseason",
                        "1" });
            } else {
                statusData.updateFieldProfile(new String[] { "offseason",
                        "0" });
            }
            String offSeason = statusData.profileTable()[10];
            statusData.dropReloadMacrosTable(new String[] {
                    profileTable[11], profileTable[12], profileTable[13],
                    profileTable[14], profileTable[15], profileTable[16],
                    profileTable[17], offSeason });
        }
        return "Executed";
    }

这是我的StatusData(数据库)类:

    public void updateFieldProfile(String updateArray[]) {
    open();

    Log.i("log", "in method");
    String fieldToUpdate = updateArray[0];
    String valueToUpdate = updateArray[1];
    String query = "UPDATE PROFILE SET " + fieldToUpdate + "="
            + "= ?";
    Log.i("logQuery", query);
    Cursor c = db.rawQuery(query, new String[] {valueToUpdate});
    c.moveToFirst();
    c.close();
    db.close();

}

0 个答案:

没有答案