最近、アンドロイドの開発を開始し、データベースからデータを保存/読み込む際に問題が発生しました。データベースクラスをhereから少し変更しました。android sqlite problem
私の問題は、いくつかのedittextでアクティビティがあることです。 onCreateでは、データベースからの文字列をedittextに書き込む必要があります。ボタンを押すと、データベースのデータを更新して、アクティビティを閉じます。データベースが空の場合は、データベースを読み込むためにcursor.getCount!= 0を指定してif節を追加しましたが、この条件は真になりません。
は、ここに私のコード
package com.gabrielisonline.timetable;
public class DurationActivity extends Activity {
DbAdapter dba;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.duration);
Button saveButton = (Button) findViewById(R.id.duration_button1);
saveButton.setOnClickListener(new SaveButtonListener());
dba = new DbAdapter(this);
dba.open();
Cursor c = dba.fetchAllDurations();
if (c.getCount() != 0) {
int i = c.getColumnIndex(DbAdapter.KEY_TIME);
((EditText) findViewById(R.id.duration_length)).setText(dba.fetchDuration(0).getString(i));
((EditText) findViewById(R.id.duration_lesson1)).setText(dba.fetchDuration(1).getString(i));
((EditText) findViewById(R.id.duration_lesson2)).setText(dba.fetchDuration(2).getString(i));
((EditText) findViewById(R.id.duration_lesson3)).setText(dba.fetchDuration(3).getString(i));
((EditText) findViewById(R.id.duration_lesson4)).setText(dba.fetchDuration(4).getString(i));
((EditText) findViewById(R.id.duration_lesson5)).setText(dba.fetchDuration(5).getString(i));
((EditText) findViewById(R.id.duration_lesson6)).setText(dba.fetchDuration(6).getString(i));
((EditText) findViewById(R.id.duration_lesson7)).setText(dba.fetchDuration(7).getString(i));
((EditText) findViewById(R.id.duration_lesson8)).setText(dba.fetchDuration(8).getString(i));
((EditText) findViewById(R.id.duration_lesson9)).setText(dba.fetchDuration(9).getString(i));
((EditText) findViewById(R.id.duration_lesson10)).setText(dba.fetchDuration(10).getString(i));
}
}
public class SaveButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
String l = ((EditText) findViewById(R.id.duration_length)).getText().toString();
String l1 = ((EditText) findViewById(R.id.duration_lesson1)).getText().toString();
String l2 = ((EditText) findViewById(R.id.duration_lesson2)).getText().toString();
String l3 = ((EditText) findViewById(R.id.duration_lesson3)).getText().toString();
String l4 = ((EditText) findViewById(R.id.duration_lesson4)).getText().toString();
String l5 = ((EditText) findViewById(R.id.duration_lesson5)).getText().toString();
String l6 = ((EditText) findViewById(R.id.duration_lesson6)).getText().toString();
String l7 = ((EditText) findViewById(R.id.duration_lesson7)).getText().toString();
String l8 = ((EditText) findViewById(R.id.duration_lesson8)).getText().toString();
String l9 = ((EditText) findViewById(R.id.duration_lesson9)).getText().toString();
String l10 = ((EditText) findViewById(R.id.duration_lesson10)).getText().toString();
dba.updateDuration(0,l);
dba.updateDuration(1,l1);
dba.updateDuration(2,l2);
dba.updateDuration(3,l3);
dba.updateDuration(4,l4);
dba.updateDuration(5,l5);
dba.updateDuration(6,l6);
dba.updateDuration(7,l7);
dba.updateDuration(8,l8);
dba.updateDuration(9,l9);
dba.updateDuration(10,l10);
dba.close();
finish();
}
}
}
あなたの助けを
感謝です!
EDIT:あなたの答えの人たちのための
感謝。問題は確かに私が実際に何かをデータベースに書き込まなかったことです。 updateDurationを使用する代わりに、onClickメソッドのコードを次のように変更しました。
if (c.getCount() != 0) {
dba.updateDuration(1,l);
dba.updateDuration(2,l1);
dba.updateDuration(3,l2);
dba.updateDuration(4,l3);
dba.updateDuration(5,l4);
dba.updateDuration(6,l5);
dba.updateDuration(7,l6);
dba.updateDuration(8,l7);
dba.updateDuration(9,l8);
dba.updateDuration(10,l9);
dba.updateDuration(11,l10);
} else {
dba.createDuration(l);
dba.createDuration(l1);
dba.createDuration(l2);
dba.createDuration(l3);
dba.createDuration(l4);
dba.createDuration(l5);
dba.createDuration(l6);
dba.createDuration(l7);
dba.createDuration(l8);
dba.createDuration(l9);
dba.createDuration(l10);
}
すべてが機能しています。私は、updateメソッドがdbへの最初の書き込み(createDurationはDbAdapterのデータベースのcreateメソッドを呼び出し、updateDurationはupdateを呼び出します)でも十分であると考えました。
エラーの詳細を投稿してください。どのようなエラー/例外がありますか?コードのどの行でエラーが発生しますか?そして、あなたはどこのデータベースにデータを書いていますか? –
例外はありません。問題は、データベースが決して読み取られないということです。たとえば、アクティビティを開いたり、edittextに何かを書き込んだり、saveを押してアクティビティを再度開いたりすると、oncreateは保存された文字列をedittextsに書き戻しますが、edittextは空です。私はdba.updateDurationでデータを書きます。あなたが望むなら、私はデータベースコードを掲示することができますが、上記のリンクとほとんど同じですが、私は1つの列を少なくしていくつかの名前を変更したことを除いて言いました。 – androidfan