編輯:例如,如果我只是這樣做:如何驗證註冊頁面的android
boolean thiscreateserror = false;
if (thiscreateserror == true) {
mListener.register(userName, password);
}
else{}
07-25 20:24:25.552 2385-2529/com.example.hoofdgebruiker.winkelskortrijk W/System: ClassLoader referenced unknown path: /data/data/com.example.hoofdgebruiker.winkelskortrijk/lib
07-25 20:24:25.574 2385-2555/com.example.hoofdgebruiker.winkelskortrijk E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb4017ef0
07-25 20:24:27.559 2385-2555/com.example.hoofdgebruiker.winkelskortrijk E/Surface: getSlotFromBufferLocked: unknown buffer: 0xaa1e6d10
EDIT2:我很抱歉。每次我嘗試在註冊後重新啓動應用程序時,我似乎都會收到此錯誤。也許問題在別的地方?
我的數據庫:
public class MyDBHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "winkelskortrijk.db";
private static final String TABLE_USERS = "users";
private static final String TABLE_FAVOURITES = "favorieten";
public static final String COLUMN_ID = "id";
public static final String COLUMN_USERNAME = "username";
public static final String COLUMN_PASSWORD = "password";
public static final String COLUMN_ID2 = "id2";
public static final String COLUMN_NAME = "naam";
public static final String COLUMN_STRAAT = "straat";
public static final String COLUMN_HUISNR = "nr";
public static final String COLUMN_POSTCODE = "postcode";
public static final String COLUMN_DEELGEMEENTE = "deelgemeente";
public static final String COLUMN_GEMEENTE = "gemeente";
public static final String COLUMN_ADRES = "adres";
public MyDBHandler(Context context, String name,
SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_USERS_TABLE = "CREATE TABLE " +
TABLE_USERS + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_USERNAME + " TEXT,"
+ COLUMN_PASSWORD + " TEXT"
+ ")";
db.execSQL(CREATE_USERS_TABLE);
String CREATE_FAVOURITES_TABLE = "CREATE TABLE " +
TABLE_FAVOURITES + "("
+ COLUMN_ID2 + " INTEGER PRIMARY KEY,"
+ COLUMN_NAME + " TEXT,"
+ COLUMN_STRAAT + " TEXT,"
+ COLUMN_HUISNR + " INTEGER,"
+ COLUMN_POSTCODE + " INTEGER,"
+ COLUMN_DEELGEMEENTE + " TEXT,"
+ COLUMN_GEMEENTE + " TEXT,"
+ COLUMN_ADRES + " TEXT,"
+ COLUMN_ID + " INT, "
+ "FOREIGN KEY(" + COLUMN_ID + ") REFERENCES "
+ TABLE_USERS + "(id) " + ")";
db.execSQL(CREATE_FAVOURITES_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
}
public User findUser(User user) {
String selectQuery = "SELECT * FROM " + TABLE_USERS + " WHERE "
+ COLUMN_USERNAME + " = '" + user.getUserName()+"'";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
User findUser = new User();
if (cursor.moveToFirst()) {
cursor.moveToFirst();
findUser.setUserName(cursor.getString(1));
findUser.setPassword(cursor.getString(2));
cursor.close();
} else {
findUser = null;
}
db.close();
return findUser;
}
public void addOrUpdateUser(User user){
ContentValues values = new ContentValues();
values.put(COLUMN_USERNAME, user.getUserName());
values.put(COLUMN_PASSWORD, user.getPassword());
SQLiteDatabase db = this.getWritableDatabase();
db.insert(TABLE_USERS, null, values);
db.close();
}
我的主要活動:
@Override
public void register(String userName, String password){
User userNew = new User();
User user = new User();
userNew.setUserName(userName);
userNew.setPassword(password);
MyDBHandler dbHandler = new MyDBHandler(this,null,null,1);
user = dbHandler.findUser(userNew);
if (user == null){
dbHandler.addOrUpdateUser(userNew);
navigateToLogin();
}
else{
navigateToRegister();
}
}
}
我不能讓它們變量,然後我得到一個錯誤,說變量nameText從內部類訪問,必須聲明爲最終...這也是我之前嘗試做的,但我不能設置mListener.register(userName,password),在這裏就是這種情況,因爲它只在符合條件時才被設置,但由於某種原因它必須被設置? – user3117628
我編輯了我的帖子,以更好地解釋問題! – user3117628
我編輯了我的答案。請立即檢查! –