【发布时间】:2011-11-25 07:53:51
【问题描述】:
希望有人能对此有所启发,让我帮忙。我有一个 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 语句使用 wither 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;
}
}
这可能是一个简单的修复,但我没有看到它...感谢任何帮助或洞察我可能做错了什么
【问题讨论】:
-
你不觉得,如果你在哪里弹出一个对话框,你已经互换了东西吗?我的意思是,你应该检查一下,if(l==0){//number not exists in db}else{//number exists } 你做了反向...不是吗?
-
啊,我完全忘记了要更改它,感谢您指出这一点
-
(在退出
#dbCheck(int)方法之前,您还应该调用Cursor#close())
标签: android sqlite android-2.2-froyo