簡體   English   中英

如何修復[ContentValues類型的put(String,Boolean)方法不適用於自變量(Boolean,Boolean)]

[英]How to fix [The method put(String, Boolean) in the type ContentValues is not applicable for the arguments (Boolean, Boolean)]

我正在嘗試學習如何開發Android應用程序,並試圖出於自己的目的修改Notepadv3Solution {http://developer.android.com/training/notepad/index.html}進行重寫。

在方法createTask (底部為nr)中,出現錯誤The method put(String, Boolean) in the type ContentValues is not applicable for the arguments (Boolean, Boolean) 我為數據庫添加了一個布爾字段,並將其也添加到createTask方法中。 我怎樣才能使布爾字段起作用?

package com.superiorxc.taskcentral;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class TasksDbAdapter {

    public static final String KEY_ROWID = "_id";
    public static final String KEY_TITLE = "title";
    public static final String KEY_BODY = "body";
    public static final Boolean KEY_COMPLETE = true;

    private static final String TAG = "TasksDbAdapter";
    private DatabaseHelper mDbHelper;
    private SQLiteDatabase mDb;    

    /**
     * Database creation sql statement
     */
    private static final String DATABASE_CREATE =
        "create table tbl_tasks (_id integer primary key autoincrement, "
        + "title text not null, body text, complete boolean not null);";

    private static final String DATABASE_NAME = "db_taskcentral";
    private static final String DATABASE_TABLE = "tbl_tasks";
    private static final int DATABASE_VERSION = 1;

    private final Context mCtx;    

    private static class DatabaseHelper extends SQLiteOpenHelper {

        DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {

            db.execSQL(DATABASE_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS tbl_tasks");
            onCreate(db);
        }
    }    

    /**
     * Constructor - takes the context to allow the database to be
     * opened/created
     * 
     * @param ctx the Context within which to work
     */
    public TasksDbAdapter(Context ctx) {
        this.mCtx = ctx;
    }

    /**
     * Open the db_taskcentral database. If it cannot be opened, try to create a new
     * instance of the database. If it cannot be created, throw an exception to
     * signal the failure
     * 
     * @return this (self reference, allowing this to be chained in an
     *         initialization call)
     * @throws SQLException if the database could be neither opened or created
     */
    public TasksDbAdapter open() throws SQLException {
        mDbHelper = new DatabaseHelper(mCtx);
        mDb = mDbHelper.getWritableDatabase();
        return this;
    }

    public void close() {
        mDbHelper.close();
    }   

    /**
     * Create a new task using the title and body provided. If the task is
     * successfully created return the new rowId for that note, otherwise return
     * a -1 to indicate failure.
     * 
     * @param title the title of the task
     * @param body the body of the task
     * @return rowId or -1 if failed
     */
    public long createTask(String title, String body, Boolean complete) {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_TITLE, title);
        initialValues.put(KEY_BODY, body);
        initialValues.put(KEY_COMPLETE,complete);


        return mDb.insert(DATABASE_TABLE, null, initialValues);
    }    

}

KEY_COMPLETE更改為

public static final String KEY_COMPLETE = "complete";

您希望它引用您在數據庫中命名的列。

您可以將ContentValues視為Map<String,Object> ,其中鍵是數據庫列的名稱,而對象是要放入該列的行中的對象。

如果您詢問“如何將布爾值轉換為字符串”,那么最簡單的方法是:

String.valueOf(Boolean)

如以下代碼所示:

    Boolean b = false;
    String aString = String.valueOf(b);
    System.out.println(aString);

一種解決方案是改變

public static final Boolean KEY_COMPLETE = true;

public static final String KEY_COMPLETE = "true";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM