2012-01-17 10 views
0

私は種観察を記録するために、Android上にきちんと動作するSQLiteデータベースを持っています。私は、JSON(首尾よく)を使用して、リモートデータベースの一連のパラメータに対して入力された観測値を検証しています。検証時には、データベース内のフラグが更新され、このプロセスが完了したことが示されます。 。しかし、私は私の主な活動(テキストを表示するときに、検証後のフラグとの観測の値が更新されませんSQLiteとアクティビティの更新

私の活動の順序は次のとおりです。

  • 主な活動(OBS = 0のデータベースから)
  • OBSエントリ活性
  • 主な活動(OBS = 1 DBからフラグAを持つ)
  • データ管理活動、
  • が完了活動、メインボタンを確認ボタン確認
  • 主な活動(OBS = 1 DBからフラグAを持つ)

I出口場合、またはメイン活動に戻って、しばらくの間、それを残し、データベースが正常にポーリングされ、OBS = 1 dbからのフラグB。

私は自分のデータベースが正しいと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 
     } 
    }); 
} 

'検証' はフラグAレコードの数です。ボタンはonCreate()メソッドで呼び出されています。それをクラス変数としてインスタンス化すれば、それは何か変わるでしょうか? おかげさまで、ありがとうございました。

UPDATE:このフラグの検証および更新を処理するコード(実際には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(); 
+0

リモート検証とデータベースの更新を行うコードを表示します(確認後) – ariefbayu

+0

私は思っていますが、確認/テストしていますが、db.close()とdb.open() )を2つのカーソルの間に配置します。肯定的な結果を示す初期テスト.... – iaindownie

答えて

1

表示された値を更新するには、メインアクティビティのonResumeメソッドを使用します。 onResumeメソッドは、onCreateとは対照的に、アクティビティが画面に表示されるたびに呼び出されます。これは、アクティビティの作成時にのみ呼び出されます。

+0

例がありますか?私があなたを正しく理解していれば、私のonCreate()にはx行のコードがあり、新しいonResume()メソッドで関連するコードを複製する必要がありますか?または、onResume()は 'content'がないページをリフレッシュするだけですか?申し訳ありませんが、コメントありがとうございます。BTW – iaindownie

+0

DRY - あなた自身を繰り返さないでください。だからコードを複製しないでください。私の考えは、ボタンを作成するコードと、UIを更新するコード/ DBの内容を分けることでした。したがってonCreate()では、ボタンを作成してクリックリスナーを登録し、onResume()にコードを追加して、DB状態に応じてUIを更新します(例:verifySightingsButton.setTextColor(getResources()。getColor color.r – henrik

関連する問題