**Here im trying to confirm that if a value is found so that i can move to the next page.**
public void onClick(View arg0) {
sqlStuff search1 = new sqlStuff(search_page.this);
switch (arg0.getId()) {
case R.id.search_button:
boolean found = false;
String Systname = editText1.getText().toString();
String[] IDSysNames = search1.getIDSysName();
for(int i = 0; i < IDSysNames.length; i++)
{
if(Systname.equals(IDSysNames[i].toString()))
{
found = true;
number = i;
}
}
if(found==true)
{
Intent search = new Intent("com.MC.ChemPal.RESULT");
startActivity(search);
}
else
{
Dialog d = new Dialog(this);
d.setTitle("result not found");
TextView tv = new TextView(this);
d.setContentView(tv);
d.show();
}
break;
这是我尝试获取以下值的部分
public String[] getIDSysName()
{
String[] result = new String[0];
try
{
String[] columns = new String[] {KEY_SYSNAME };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
int iSysName = c.getColumnIndex(KEY_SYSNAME);
int i = 0;
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
i++;
}
result = new String[i];
i = 0;
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
result[i] = c.getString(iSysName);
String lk = null;
Log.d(lk, result[i]);
i++;
}
}
catch(Exception e)
{
String tr = null;
Log.e(tr, e.getMessage());
}
return result;
}
此代码应该检查我的数据库中的值,如果找到它则转到下一页。但我继续得到我添加的未找到的值的对话框。我已经检查了值,因为我有一个数据库视图代码。
Log cat。
FATAL EXCEPTION:MAIN
java.lang.NullPointerException:println needs a message
at android.util.Log.printlnNative(Native Method)
at android.util.Log.e(Log.java:230)
at com.MC.ChemPal.SqlDStuff.getIDSysName(sqlStuff.java.153)
at com.MC.ChemPal.search_page.onClick(search_page.java:42)
at android.view.View.performClick(View.java.2485)
at android.view.View$PerformClick.run(View.java.9080)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(zygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
这是你的问题:
String tr = null;
Log.e(tr, e.getMessage());
Log.e的第一个参数应该是包含TAG的String对象。试试这个:
String tr = "My Tag";
Log.e(tr, e.getMessage());
我认为您在数据库代码中的某处出现了错误,但此处的崩溃是由异常处理引起的。
答案 1 :(得分:0)
Mark Allison
指定的原因,日志会导致错误。 如果您的代码在添加日志之前工作正常,则未获取搜索项的问题的根源可能是区分大小写搜索。
尝试使用
Systname.equalsIgnoreCase(IDSysNames[i].toString())
而不是
Systname.equals(IDSysNames[i].toString())