Я настройка Android приложения и только что прошел через документацию разработчиков Android, чтобы создать базу данных SQL http://developer.android.com/training/basics/data-storage/databases.html#WriteDbRowмагазин Integer в базе данных SQL и восстановить его в фрагменте
У меня есть MainActivity, который имеет расширение Навигационный ящик настроен: http://pastebin.com/9nyejZdV и переключатель в этом действии для замены фрагментов, когда элементы нажимаются в навигационном ящике.
Эти два фрагмента, которые переключаются являются:
StartingFragment, which is displayed when the app is first opened: http://pastebin.com/740LepNV
TeaCounterFragment, which is displayed when the second item in my navdrawer is clicked: http://pastebin.com/edfEe1Gd
В StartingFragment, в методе OnClick всякий раз, когда нажата кнопка под названием "Улун", он обновляет TextView в моем TeaCounterFragment, который показывает, сколько раз была нажата кнопка «Oolong» (с помощью String.valueOf (an_integer) и Bundle).
Проблема заключается в том, что всякий раз, когда приложение полностью закрыто, TextView сбрасывает значение по умолчанию, которое не имеет счетчика. Итак, я решил, что я буду использовать базу данных SQL для хранения целого числа, так что, когда приложение будет полностью закрыто, целое число будет сохранено. Затем, когда приложение будет открыто, я могу нажать на мой NavDrawer и перейти к моему TeaCounterFragment, и число все равно будет там.
Как я могу это достичь?
активность базы данных:
public final class Database {
// To prevent someone from accidentally instantiating the database class,
// give it an empty constructor.
public Database() {
}
/* Inner class that defines the table contents */
public static abstract class DBEntry implements BaseColumns {
public static final String TABLE_NAME = "Number of Cups of Tea";
public static final String COLUMN_NAME_ENTRY_ID = "entryid";
public static final String COLUMN_NAME_TITLE = "Tea Counter Table";
public static final String COLUMN_NAME_SUBTITLE_OOLONG = "Oolong";
}
private static final String TEXT_TYPE = " TEXT";
private static final String COMMA_SEP = ",";
private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + DBEntry.TABLE_NAME + " (" +
DBEntry._ID + " INTEGER PRIMARY KEY," +
DBEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
DBEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP +
DBEntry.COLUMN_NAME_SUBTITLE_OOLONG + TEXT_TYPE + COMMA_SEP +
")";
private static final String SQL_DELETE_ENTRIES =
"DROP TABLE IF EXISTS" + DBEntry.TABLE_NAME;
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "TeaCounter.db";
public static final int DATABASE_VERSION = 1;
Context context;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_ENTRIES); //creates Database
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// This database is only a cache for online data, so its upgrade policy is
// to simply to discard the data and start over
db.execSQL(SQL_DELETE_ENTRIES);
onCreate(db);
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onUpgrade(db, oldVersion, newVersion);
}
public void storeCounts() {
DatabaseHelper mDbHelper = new DatabaseHelper(context);
SQLiteDatabase db = mDbHelper.getWritableDatabase();
// Create a new map of values, where column names are the keys
ContentValues values = new ContentValues();
values.put(DBEntry.COLUMN_NAME_ENTRY_ID, 1);
values.put(DBEntry.COLUMN_NAME_TITLE, "Tea Counter Table");
values.put(DBEntry.COLUMN_NAME_SUBTITLE_OOLONG, "Oolong Tea");
}
}
}
Я думал о использовании базы данных SQL, потому что я хотел бы быть в состоянии сделать это для нескольких кнопок. Однако я также открыт для предложений о любом другом способе достижения этого.
, который не будет работать как имя таблицы. – njzk2
@ njzk2 Я предполагаю, что это должно быть что-то вроде .. "NUM_CUPS"? – freddiev4
возможно. Есть несколько ограничений на имена таблиц, см. Http://stackoverflow.com/questions/3694276/what-are-valid-table-names-in-sqlite – njzk2