2016-10-25 6 views
0

私はキャプチャバーコードのためのアンドロイドアプリケーションを作っています。アプリケーションは基本的に何ですか:ナビゲーションドロワーから私はフラグメントに私を連れて来るアイテムを選択し、このフラグメントにはスピナー2つのテキストビューでは、キロを手動で、キャプチャリーダーでバーコードを入れた後、コードを読み取ってデータをデータベースに送信した後、スピナーの製品を選択しますが、システムがクラッシュして値を救済しないバーコードを読み取ったときと同じ手順を実行します。私はこの問題を解決しようとしている2週間のようでしたが、なぜこれが起きるのか分かりません。BroadCast Receiver java.lang.NullPointerException

private BroadcastReceiver mSamDataReceiver = new BroadcastReceiver() { 
@Override 
public void onReceive(Context context, Intent intent) { 
    kilos = edt1.getText().toString().trim(); 
    if (intent.getAction().equals(SCN_CUST_ACTION_SCODE)) { 
     codigo_barras = intent.getStringExtra(SCN_CUST_EX_SCODE); 
     edt2.setText(codigo_barras); 

     System.out.println(kilos+ " " + codigo_barras+" "+ nombre); 

     if (edt2 !=null){ 

      StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, 
        new Response.Listener<String>() { 
         @Override 
         public void onResponse(String response) { 
          Toast.makeText(getActivity(),R.string.msjeEnvio,Toast.LENGTH_LONG).show(); 
         } 
        }, 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          Toast.makeText(getActivity(),error.toString(), Toast.LENGTH_LONG).show(); 
         } 
        }){ 

       @Override 
       protected Map<String,String> getParams(){ 
        Map<String,String> params = new HashMap<String, String>(); 
        params.put(CATEGORIA,nombre); 
        params.put(CODIGO,codigo_barras); 
        params.put(KILOS,kilos); 
        return params; 
       } 

       }; 

           Req.getInstance(getActivity()).addToRequestQueue(stringRequest); 

10-26 01:52:48.961 5742から5742/cl.parmex.lfigueroa.inventario E/AndroidRuntime:致命的な例外:android.widget.Toastにおける主 java.lang.NullPointerExceptionが。android.widget.Toast.makeText(Toast.java:238)で(Toast.java:92) でcl.parmex.lfigueroa.inventario.SpinFragment $ 2 $ 2.onErrorResponse(SpinFragment.java:244) コムで.android.volley.Request.deliverError(Request.java:598) at com.android.volley.ExecutorDelivery $ ResponseDeliveryRunnable.run(ExecutorDelivery.java:101) (android.os.Handler.handleCallback(Handler.java:730)) (android.os.Handler.dispatchMessage(Handler.java:101) :92) android.os.Looper.loop(Looper.java:137) (android.app.ActivityThread.main(ActivityThread.java:5136) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.reflect.Mavod.invoke(Method.java:525) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737) dalvik.system.NativeStart.mainでcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) (ネイティブメソッド)で

+0

'Logcat' /' Crash log'ダンプを取得できますか?ありがとうございます – andre3wap

+0

正確にNPEを取得していますか?あなたはエラーのトレースを提供しますか?私は助けたいと思っていますが、あなたの誤りがどこであるかはまだ分かりません。 –

+0

getActivity()がnullを返す可能性があります – Sravan

答えて

0

は時々バレーはエラーリスナーでヌルVolleyErrorオブジェクトを提供します。私は以前にその問題を抱えていました。あなたは "error.toString()"を削除していくつかの他のエラーメッセージを表示したいかもしれません。

PS:これは答えではありませんが、私もコメントするには十分な評判がありません。

0

NullPointerExceptionが発生する理由は、コールバックが返るまでにコンテキストがnullであるためです。これはVolleyを使用する際の主要な問題の1つです。コンテキストが有効であるようにプログラムを構造化する必要があります。私は本当にその部分をあなたに任せていますが、Activity Level ContextではなくApplication Level Contextを使用したいと思うかもしれません。

注:明らかでない場合は、getActivity()を使用すると実際にアクティビティレベルのコンテキストが使用されています。

+0

どうすればいいですか? Reqクラスを作成したときに私はすでにそれを行っていましたが、 Android Manifestで宣言されました –

+0

getActivity()を使用する代わりに、 'Toast.makeText(getActivity()、error.toString()、Toast.LENGTH_LONG).show();'では、getApplicationContext()を試す必要があります。 –

+0

私はそれを試みたが、まだ動作しません:( –

関連する問題