Обновления SQLite и Activity - PullRequest
       1

Обновления SQLite и Activity

0 голосов
/ 17 января 2012

У меня есть аккуратная, работающая база данных SQLite на Android, которая записывает наблюдения видов. Затем я использую JSON (успешно) для проверки введенных наблюдений по набору параметров в удаленной базе данных. При проверке флаг в базе данных обновляется, чтобы сообщить, что этот процесс завершен. Но когда я просматриваю свою основную деятельность (Текст, значения для наблюдений с флагами после проверки не обновляются.

Мой порядок активности:

  • Основная деятельность (obs = 0 из базы данных)
  • Obs Вступительная деятельность
  • Основная деятельность (obs = 1 с флагом A из db)
  • Деятельность по управлению данными, кнопка подтверждения
  • Подтверждение выполненного действия, основная кнопка
  • Основная деятельность (obs = 1 с флагом A из db)

Если я выйду или оставлю это на некоторое время, а затем вернусь к основному действию, база данных будет правильно опрошена и obs = 1 с флагом B из db.

Так что я знаю, что моя база данных верна и SQL тоже верен. Может быть, я объявляю свои кнопки не в том месте, чтобы действие было правильно возобновлено ()?

Мой код:

final Button verifySightingsButton = (Button) findViewById(R.id.uploadprocess);
if (verifies == 0) {
    verifySightingsButton.setTextColor(getResources().getColor(R.color.red));
} else {
    verifySightingsButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // do stuff
        }
    });
}

где «проверяет» - количество записей флага А. Кнопка вызывается методом onCreate(). Будет ли это иметь какое-то значение, если я создам его экземпляр как переменную класса? Заранее спасибо - беспокоить меня бессмысленно!

ОБНОВЛЕНИЕ: Это код (фактически использующий XML, а не JSON, который используется для других запросов), который обрабатывает проверку и обновление флага:

// Get details for an observation within loop
ArrayList d = (ArrayList) allVerifyRows.get(i);
// Build the URL to verify the data
String aURL = buildVerifyURL(d);
// Parse the XML
aValid = ParseVerificationXML.verifyXMLdata(aURL);
db.open();
Long bouCode = new Long((String) speciesList.get((String) d.get(3)));
boolean insert = db.updateNote(
    ((Long) d.get(0)).longValue(),
    ((Long) d.get(1)).longValue(),
    // and some other variables being updated
db.close();

и код для проверки базы данных на наличие записей, которые не проверены:

NotesDbAdapter db = new NotesDbAdapter(this);
db.open();
Cursor c = db.fetchAllNotes();
species = new ArrayList<String>();
while (c.moveToNext()) {
    String str1 = c.getString(2); // Date
    species.add(str1);
}
c.close();

Cursor v = db.performNullCountForVerification();
if (v.moveToFirst()) {
    stillToVerify = v.getInt(0); // Non-Verified records
    readyForUpload = stillToVerify;
}
v.close();
stillToVerify = species.size() - stillToVerify;
db.close();

1 Ответ

1 голос
/ 17 января 2012

Вы можете использовать метод onResume своей основной деятельности для обновления отображаемых значений.Метод onResume вызывается каждый раз, когда действие появляется на экране, в отличие от onCreate, который вызывается только при создании действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...