Надеясь, что кто-то сможет пролить немного света на это, чтобы я выручил. У меня есть поле EditText, где пользователь вводит серийный номер и / или ссылочный номер, а затем нажимает кнопку загрузки.
http://i.stack.imgur.com/95iWI.png
Я сделал способ проверить и посмотреть, был ли этот номер уже добавлен в базу данных. Если нет, то у меня появляется диалоговое окно «Да / Нет» с вопросом, хотят ли они добавить в базу данных. Затем, если он находится в БД, он загрузит данные этого числа в четыре TextView.
http://i.stack.imgur.com/dHbCQ.png
Если они выбирают «да», тогда запускается новое намерение, переключаясь на экран формы (еще не рассматривал передачу пользовательского ввода в другой класс). но чтобы вернуться к моей маленькой проблеме, при тестировании в эмуляторе все работает нормально. Затем, когда я ввожу число, которое я уже ввел, оно все равно открывает диалоговое окно (оно есть в операторе if).
Код кнопки загрузки
String s = input.getText().toString();
int l = Integer.parseInt(s);
Db load = new Db(this);
load.open();
y = load.dbCheck(l);
if (y != 0) {
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
Intent i = new Intent("android.intent.action.FORM");
startActivity(i);
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Would you like to add to Database?")
.setTitle("Not in Database:")
.setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener)
.show();
}
else
{
final Dialog dbentery = new Dialog(this);
dbentery.setTitle("Entry Exists!");
TextView tv = new TextView(this);
tv.setText("The serial number you have entered is already in database");
dbentery.setContentView(tv);
dbentery.show();
final Timer t = new Timer();
t.schedule(new TimerTask() {
public void run() {
dbentery.dismiss();
t.cancel();
}
}, 2000);
}
load.close();
Теперь с помощью метода, который я создал, я подумал, что все правильно, но что-то просто не работает. Я возвращаю целое число назад к коду кнопки загрузки, где оператор if использует 0 или 1, чтобы проверить, находится ли он в БД и что он должен делать. Я понял, так как он запускает диалог, он возвращает 0, что он может быть с курсором. Я просмотрел несколько других постов здесь, которые были похожи, но, похоже, не помогли мне, или я не понимал, что делается. Итак, вот метод проверки в моем классе DBHelper
/* this is to check to see if entry is in db or not */
public int dbCheck(int l) throws SQLException {
String[] cols = new String[] { KEY_ROWID, KEY_ONE, KEY_TWO, KEY_THREE, KEY_FOUR };
Cursor c = ourDB.query(KEY_TABLE, cols, KEY_ONE + "=" + l, null,
null, null, null);
if (c == null) {
return 0;
}else {
return 1;
}
}
это может быть простое исправление, но я не вижу его ... спасибо за любую помощь или понимание того, что я могу делать неправильно