データベース全体を削除し、現在のアクティビティを終了してLoginActivityにリダイレクトするログアウトボタンを作成します。データベースを削除します。android sqlite
これは機能しますが、変更をコミットするにはアプリケーションを再起動する必要があります。 たとえば、LoginActivityに戻ると、ユーザーデータが引き続き表示されます。アプリを再起動すると、ログインフォームが表示されます。 これをどのように達成できますか?
Globals.java
public void signOff(){
SharedPreferences preferences = instance.context.getSharedPreferences("globals", 0);
preferences.edit().remove("domain").commit();
DatabaseHelper dbHelper = new DatabaseHelper(instance.context);
dbHelper.deleteData();
finish();
Intent mainActivity = new Intent(instance.context, LoginActivity.class);
instance.context.startActivity(mainActivity);
}
DatabaseHelper.java
public final class DatabaseHelper extends SQLiteOpenHelper {
public SQLiteDatabase db;
public static DatabaseHelper instance ;
public static Context context;
public static final String DATABASE_NAME = "Oryx.db";
public static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// Init the singleton
if (instance == null){
instance = this;
instance.context = context;
instance.db = instance.getWritableDatabase();
}
}
public DatabaseHelper(Context context, String tableCreateQuery)
{
this(context);
instance.db.execSQL(tableCreateQuery);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void deleteData(){
instance.context.deleteDatabase(DATABASE_NAME);
}
}
addFlagsのおかげで、少し助けてくれた! – Jordy