2013-02-19 2 views
-2

나는 zxing을 사용하여 안드로이드에서 qr 코드를 스캔하고 그 결과를 얻습니다. 이제 qr 코드 내용 (항상 숫자)을 sqlite select 쿼리에 전달하고 결과를 화면에 표시하려고합니다. 그러나 쿼리에 내용을 전달할 때 Null 포인터 예외가 발생합니다. 코드는qr 코드를 스캔하여 qr 콘텐츠를 쿼리하여 android의 화면에 결과를 표시합니다.

Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
    intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
    startActivityForResult(intent, 0); 

protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 
    if (requestCode == 0) { 
     if (resultCode == RESULT_OK) { 
      String contentId = intent.getStringExtra("SCAN_RESULT"); 
      String format = intent.getStringExtra("SCAN_RESULT_FORMAT");     

      Cursor cursorDetails = db.query("cd_details", new String[] {"location","latitude","longitude","photo"}, "id" + " = " + "'" + contentId + "'", null, null, null, null); 
      cursorDetails.moveToFirst(); 


     } else if (resultCode == RESULT_CANCELED) {     
      Toast toast = Toast.makeText(this, "Scan was Cancelled!", Toast.LENGTH_LONG); 
      toast.setGravity(Gravity.TOP, 25, 400); 
      toast.show();     
     } 
    } 
} 

쿼리 줄에 오류가 발생했습니다. 위의 코드에서이

java.lang.RuntimeException: Unable to resume activity {com.pixel.scanner/com.pixel.scanner.ScannerActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {com.pixel.scanner/com.pixel.scanner.ScannerActivity}: java.lang.NullPointerException 
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2124) 
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2139) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1672) 
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:2836) 
at android.app.ActivityThread.access$1600(ActivityThread.java:117) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:130) 
at android.app.ActivityThread.main(ActivityThread.java:3687) 
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:867) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {com.pixel.scanner/com.pixel.scanner.ScannerActivity}: java.lang.NullPointerException 
at android.app.ActivityThread.deliverResults(ActivityThread.java:2536) 
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2111) 
... 13 more 
Caused by: java.lang.NullPointerException 
at com.pixel.scanner.ScannerActivity.onActivityResult(ScannerActivity.java:70) 
at android.app.Activity.dispatchActivityResult(Activity.java:3908) 
at android.app.ActivityThread.deliverResults(ActivityThread.java:2532) 
... 14 more 

라인 (70)

Cursor cursorDetails = db.query("cd_details", new String[] {"location","latitude","longitude","photo"}, "id" + " = " + "'" + contentId + "'", null, null, null, null); 

입니다 이것에 대한 어떤 제안이 큰 도움이 될 것 같은 오류가 읽습니다.

+1

ScannerActivity 라인 70에서 당신은 null 객체를 가지고있다. – bmavus

+0

@bmavus 답장을 보내 주셔서 감사합니다. 하지만 거기에 null 개체가 없습니다. – Shrikant

+0

@bmavus 내 수정 된 질문을 확인하십시오. 나는 라인 70을 언급했다. – Shrikant

답변

1

스택 추적은 이미 답변을 알려줍니다. 앱에 70 번 줄에 문제가 있습니다. db은 null입니다.

+0

답장을 보내 주셔서 감사합니다. 당신의 대답에서 단서를 얻었습니다. – Shrikant

1

문제는 READ/WRITE를 위해 데이터베이스를 열지 못했습니다. 그래서 db는 null이되었습니다. 나는 아래 라인과 그것의 작업을 추가했다. ..

db = SQLiteDatabase.openDatabase(fileIsExists.toString(), null, SQLiteDatabase.OPEN_READWRITE); 
관련 문제