0
**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;
}

このコードは、データベースで値をチェックし、見つかった場合は次のページに移動することになっています。しかし、追加した値が見つからないというダイアログが表示され続けます。データベースビューコードも持っているので、値がそこにあることを確認しました。

丸太猫。

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)
4

2 に答える 2

0

問題は次のとおりです。

  String tr = null;
  Log.e(tr, e.getMessage());    

Log.e の最初の引数は、TAG を含む String オブジェクトでなければなりません。代わりにこれを試してください:

  String tr = "My Tag";
  Log.e(tr, e.getMessage());    

データベース コードのどこかでエラーが発生していると思いますが、ここでのクラッシュは例外処理が原因です。

于 2013-04-15T11:13:07.213 に答える
0

log で指定された理由により、エラーが発生しますMark Allison。ログを追加する前にコードが正常に機能していた場合、検索されたアイテムを取得できない問題の根本原因は、大文字と小文字を区別する検索である可能性があります。

使ってみてください

Systname.equalsIgnoreCase(IDSysNames[i].toString())

それ以外の

Systname.equals(IDSysNames[i].toString())
于 2013-04-15T11:25:50.130 に答える