2016-10-25 2 views
0

Я делаю приложение для Android для штрих-кода захвата. Как правило, что приложение: из ящика навигации Я выбираю элемент, который приносит мне фрагмент, и в этом фрагменте есть прядильщик и два текстовых представления, я выбираю продукт счетчика, после того, как я поместил килограммы вручную и с помощью считывателя считывал штрих-код, и когда он читает код, он отправляет данные в базу данных, но когда я перехожу к другому элементу в меню и выполнить ту же процедуру, когда он считывает штрих-код, который система выдает из строя и не спасает никакого значения. Я как две недели пытался решить эту проблему, и я не знаю, почему это происходит. Довольная помощь!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 Е/AndroidRuntime: неустранимый: Главный java.lang.NullPointerException в android.widget.Toast . (Toast.java:92) в android.widget.Toast.makeText (Toast.java:238) в cl.parmex.lfigueroa.inventario.SpinFragment $ 2 $ 2.onErrorResponse (SpinFragment.java:244) на ком .android.volley.Request.deliverError (Request.java:598) на com.android.volley.ExecutorDelivery $ ResponseDeliveryRunnable.run (ExecutorDelivery.java:101) на android.os.Handler.handleCallback (Handler.java:730) на android.os.Handler.dispatchMessage (Handler.java : 92) на android.os.Looper.loop (Looper.java:137) на android.app.ActivityThread.main (ActivityThread.java:5136) на java.lang.reflect.Method.invokeNative (собственный метод) at java.lang.reflect.Method.invoke (Method.java:525) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:737) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553) в dalvik.system.NativeStart.main (Native Method)

+0

Можем ли мы получить свалку 'Logcat' /' Crash log'? спасибо – andre3wap

+0

Где именно вы получаете NPE? Просим ли вы предоставить трассировку ошибок? Я хотел бы помочь, но пока неясно, где ваша ошибка. –

+0

ваш getActivity() может возвращать null – Sravan

ответ

0

Иногда Volley дает нулевой объект VolleyError в приемнике ошибки. Раньше у меня была эта проблема. Вы можете хотеть проверить удаление «error.toString()» и показать другое сообщение об ошибке.

PS: Я знаю, что это не ответ, но у меня также недостаточно репутации для комментариев.

0

Причина, по которой вы получаете исключение NullPointerException, заключается в том, что контекст является нулевым к моменту возврата обратного вызова. Это одна из основных проблем использования Volley. Вы должны структурировать свою программу таким образом, чтобы контекст все еще действовал. Я действительно оставлю эту часть до вас, но, возможно, вы хотите использовать Контекст уровня приложения, а не Контекст уровня активности.

Примечание: В случае непонятного использования, когда вы используете getActivity(), вы фактически используете Контекст уровня активности.

+0

Как мне это сделать? Я, хотя я уже это сделал, когда создал класс Req. И объявлено в Android Manifest –

+0

В 'Toast.makeText (getActivity(), error.toString(), Toast.LENGTH_LONG) .show();' вместо использования getActivity() вы должны попробовать getApplicationContext(). –

+0

Я пробовал, но все равно не работает :( –