0
我有2個活動,第一個是DataBase助手,第二個是主要活動。根據數據庫中的表設置單選按鈕
現在,我試圖根據KEY__NAME列中的表DATABASE_TABLE_SETTINGS上的名稱設置單選按鈕。
我試着在主要活動上設置下面的代碼,並得到一個遊標,它檢查是否!c.isAfterLast,如果這是真的,我希望它設置新的單選按鈕,其ID爲KEY_ROW_b_ID,名稱爲KEY_b_NAME 。
共進午餐之後,我得到這個錯誤:
05-27 19:33:44.055: E/AndroidRuntime(2189): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tamar.efrat/com.tamar.efrat.Tamar_appActivity}: java.lang.NullPointerException
的在主要活動循環是:
DatBas dbc = new DatBas(Tamar_appActivity.this);
dbc.open();
SQLiteDatabase tdb = null;
String[] columns = new String[] { DatBas.KEY_ROW_B_ID, DatBas.KEY_B_NAME };
Cursor c = tdb.query(DatBas.DATABASE_TABLE_SETTINGS, columns, null, null, null, null,
null);
int iRawBId = c.getColumnIndex(DatBas.KEY_ROW_B_ID);
int iBName = c.getColumnIndex(DatBas.KEY_B_NAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
RadioGroup radiogroup = (RadioGroup)
findViewById(R.id.bNameSelectGroup);
RadioButton rdbtn = new RadioButton(this);
rdbtn.setId(iRawBId);
rdbtn.setText(iBName);
radiogroup.addView(rdbtn);
}
dbc.close();
數據庫助手的代碼:
public class DatBas {
public static final String KEY_ROWID = "_id";
public static final String KEY_SHOURS = "start_hour";
public static final String KEY_SMINUTE = "start_minute";
public static final String KEY_SDATE = "start_date";
public static final String KEY_AMOUNT = "amount";
public static final String KEY_SIDE = "side";
public static final String KEY_KIND = "kind";
public static final String KEY_ROW_b_ID = "_id";
public static final String KEY_b_IMAGE_PATH = "uri_b";
public static final String KEY_b_NAME = "b_name";
public static final String KEY_b_GENDER = "b_gender";
public static final String KEY_b_BORN_DATE_YEAR = "b_age_year";
public static final String KEY_b_BORN_DATE_MONTH = "b_age_month";
public static final String KEY_b_BORN_DATE_DAY = "b_age_day";
private static final String DATABASE_NAME = "TamatDB";
private static final String DATABASE_TABLE = "stop_watch_records";
private static final String DATABASE_TABLE_SETTINGS = "settings";
private static final int DATABASE_VERSION = 3 ;
private TamarDatabase thdb;
private static Context tcontext;
private SQLiteDatabase tdb;
private static class TamarDatabase extends SQLiteOpenHelper {
public TamarDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String ctData = "CREATE TABLE " + DATABASE_TABLE + " ("
+ KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_SHOURS + " TEXT, " + KEY_SMINUTE
+ " TEXT, " + KEY_SDATE + " TEXT, "
+ KEY_AMOUNT + " TEXT, " + KEY_SIDE
+ " TEXT, " + KEY_KIND + " TEXT);";
db.execSQL(ctData);
String ctSettings = "CREATE TABLE " + DATABASE_TABLE_SETTINGS
+ " (" + KEY_ROW_b_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_b_IMAGE_PATH + " TEXT, " + KEY_b_NAME
+ " TEXT, " + KEY_b_GENDER + " TEXT, "
+ KEY_b_BORN_DATE_YEAR + " TEXT, "
+ KEY_b_BORN_DATE_MONTH + " TEXT, "
+ KEY_b_BORN_DATE_DAY + " TEXT);";
db.execSQL(ctSettings);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_SETTINGS);
onCreate(db);
}
}
public DatBas(Context c) {
tcontext = c;
}
public DatBas open() throws SQLiteException {
thdb = new TamarDatabase(tcontext);
tdb = thdb.getWritableDatabase();
return this;
}
public SQLiteDatabase getReadableDatabase() throws SQLiteException {
thdb = new TamarDatabase(tcontext);
tdb = thdb.getReadableDatabase();
return tdb;
}
public void close() {
tdb.close();
}
public long createEntry(String sh, String sm, String sd, String at,
String tside, String tkind) {
ContentValues cv = new ContentValues();
cv.put(KEY_SHOURS, sh);
cv.put(KEY_SMINUTE, sm);
cv.put(KEY_SDATE, sd);
cv.put(KEY_AMOUNT, at);
cv.put(KEY_SIDE, tside);
cv.put(KEY_SIDE, tkind);
return tdb.insert(DATABASE_TABLE, null, cv);
}
public long createEntrySettings(String pt, String bn, String bg,
String bbdy, String bbdm, String bbdd) {
ContentValues cv2 = new ContentValues();
cv2.put(KEY_b_IMAGE_PATH, pt);
cv2.put(KEY_b_NAME, bn);
cv2.put(KEY_b_GENDER, bg);
cv2.put(KEY_b_BORN_DATE_YEAR, bbdy);
cv2.put(KEY_b_BORN_DATE_MONTH, bbdm);
cv2.put(KEY_b_BORN_DATE_DAY, bbdd);
return tdb.insert(DATABASE_TABLE_SETTINGS, null, cv2);
}
public String getData() {
String[] columns = new String[] { KEY_ROWID, KEY_SHOURS, KEY_SMINUTE,
KEY_SDATE, KEY_AMOUNT, KEY_SIDE, KEY_KIND };
Cursor c = tdb.query(DATABASE_TABLE, columns, null, null, null, null,
null);
String results = "";
int iRaw = c.getColumnIndex(KEY_ROWID);
int iShours = c.getColumnIndex(KEY_SHOURS);
int iSminute = c.getColumnIndex(KEY_SMINUTE);
int iDate = c.getColumnIndex(KEY_SDATE);
int iAmount = c.getColumnIndex(KEY_AMOUNT);
int iSide = c.getColumnIndex(KEY_SIDE);
int iKind = c.getColumnIndex(KEY_KIND);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
results = results + "the id is " + c.getString(iRaw)
+ " the sart hour is " + " " + c.getString(iShours)
+ " the start minute is " + " " + c.getString(iSminute)
+ " the start date is " + " " + c.getString(iDate)
+ " the amount is " + " " + c.getString(iAmount)
+ " the side is " + " " + c.getString(iSide)
+ " the kind is " + " " + c.getString(iKind) + "\n";
}
return results;
}
public String getDataSettings() {
String[] columns = new String[] { KEY_ROW_b_ID, KEY_b_IMAGE_PATH,
KEY_b_NAME, KEY_b_GENDER, KEY_b_BORN_DATE_YEAR,
KEY_b_BORN_DATE_MONTH, KEY_b_BORN_DATE_DAY };
Cursor c = tdb.query(DATABASE_TABLE_SETTINGS, columns, null, null,
null, null, null);
String results = "";
int iRawbId = c.getColumnIndex(KEY_ROW_b_ID);
int iBIPath = c.getColumnIndex(KEY_b_IMAGE_PATH);
int iBName = c.getColumnIndex(KEY_b_NAME);
int iGender = c.getColumnIndex(KEY_b_GENDER);
int iBBDateYear = c.getColumnIndex(KEY_b_BORN_DATE_YEAR);
int iBBDateMonth = c.getColumnIndex(KEY_b_BORN_DATE_MONTH);
int iBBDateDay = c.getColumnIndex(KEY_b_BORN_DATE_DAY);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
results = results + " id " + " " + c.getString(iRawbId)
+ " path " + " " + c.getString(iBIPath)
+ " name " + " " + c.getString(iBName)
+ " gender " + " " + c.getString(iGender)
+ " year " + " " + c.getString(iBBDateYear)
+ " month " + " " + c.getString(iBBDateMonth)
+ " day " + " " + c.getString(iBBDateDay) + "\n";
}
return results;
}
public String getDataSettingsbName() {
String[] columns = new String[] { KEY_ROW_b_ID, KEY_b_NAME };
Cursor c = tdb.query(DATABASE_TABLE_SETTINGS, columns, null, null,
null, null, null);
String results = "";
int iRawbId = c.getColumnIndex(KEY_ROW_b_ID);
int iBName = c.getColumnIndex(KEY_b_NAME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
results = c.getString(iRawbId)+ c.getString(iBName)+ "\n";
}
return results;
}
public DatBas delete() {
tdb.delete(DATABASE_TABLE, null, null);
tdb.delete(DATABASE_TABLE_SETTINGS, null, null);
return null;
}
}
放滿logcat – waqaslam