2016-04-15 13 views
2

Ich habe mehr What is a NullPointerException, and how do I fix it? Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference und ein paar lesen, aber ich habe kein Glück hatte es zu reparieren.com.android.volley.VolleyError: java.lang.NullPointerException

Dies ist der Fehler, die ich von Volley Fehler Hörer bekommen -

com.android.volley.VolleyError: java.lang.NullPointerException: Der Versuch, virtuelle Methode ‚int java.lang.String.length aufzurufen () 'auf einem Nullobjekt Referenz

Ich bin relativ neu zu Android, könnte mir bitte jemand erklären, was die Ursache für mein Problem und mir helfen, es zu beheben?

Unten ist der Code für die Aktivität, die die Volley Anfrage macht -

public class CircleActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener { 

private Toolbar toolbar; 
private FloatingActionButton fab; 
private ArrayList<Users> listUsers = new ArrayList<>(); 
SessionManager sessionManager; 

BroadcastReceiver broadcastReceiver; 

private RecyclerView listUsersCircle; 

//swipe 
private SwipeRefreshLayout swipeRefreshLayout; 

//volley login 
//mobile hotspot 
//public static final String REGISTER_URL = "http://192.168.43.181/save/user/getPeopleList"; 
//ghar 
public final String REGISTER_URL = "http://192.168.0.10/save/user/getPeopleList"; 


private CircleListAdapter circleListAdapter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    sessionManager = new SessionManager(getApplicationContext()); 
    if (sessionManager.isLoggedIn()) { 
     setContentView(R.layout.activity_circle); 
     toolbar = (Toolbar) findViewById(R.id.app_bar); 
     //tell android to use my toolbar 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment) 
       getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer); 

     drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar); 

     listUsersCircle = (RecyclerView) findViewById(R.id.circle); 
     listUsersCircle.setLayoutManager(new LinearLayoutManager(getApplicationContext())); 
     circleListAdapter = new CircleListAdapter(getApplicationContext()); 
     listUsersCircle.setAdapter(circleListAdapter); 


     swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_circle); 
     swipeRefreshLayout.setOnRefreshListener(this); 


     sendJsonRequest(); 

     //get user_id from session 
     String user_id = sessionManager.getUserDetails().get("user_id"); 
     //adding data to the intent 
     Intent intent = new Intent(getBaseContext), LocationService.class); 
     intent.putExtra("user_id", user_id); 
     startService(intent); 

     fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       String phoneNumber="123123123412"; 
       String message ="Hello sms"; 

       sendSMS(phoneNumber,message); 


      } 
     }); 




     //location service 

     // startService(new Intent(getBaseContext(), LocationService.class)); 

     //swipe to refresh 


    /* JSONObject obj = new JSONObject(); 
    try { 
     obj.put("txtCircleId", "acca16d632"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    Log.d("Nishon",obj.toString()); 
    RequestQueue requestQueue = VolleySingleton.getsInstance().getRequestQueue(); 
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, 
      URL_GET_CIRCLE_USERS, 
      obj, 
      new Response.Listener<JSONObject>() { 

     @Override 
     public void onResponse(JSONObject response) { 
      Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_LONG).show(); 
      Log.d("Nishon",response.toString()); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.d("Nishon", error.toString()); 
     } 
    }); 
    requestQueue.add(request);*/ 

    } else { 
     Intent intent = new Intent(this, LoginActivity.class); 
     startActivity(intent); 
     finish(); 
    } 

} 

private void sendSMS(String phoneNumber, String message) 
{ 

    PendingIntent pi = PendingIntent.getActivity(this, 0, 
      new Intent(this, SMS.class), 0); 
    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(phoneNumber, null, message, pi, null); 
} 

public void sendJsonRequest() { 
    RequestQueue requestQueue = VolleySingleton.getsInstance().getRequestQueue(); 
    StringRequest request = new StringRequest(Request.Method.POST, REGISTER_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        listUsers = parseJsonResponse(response); 
        circleListAdapter.setCircleList(listUsers); 
        Log.d("d",response); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(getApplicationContext(), error.toString(), Toast.LENGTH_LONG).show(); 
        Log.d("d", error.toString()); 
       } 
      }) { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 
      String group_key= sessionManager.getUserDetails().get("group_key"); 

      params.put("group_key", group_key); 
      return params; 
     } 
    }; 
    requestQueue.add(request); 
} 

public ArrayList<Users> parseJsonResponse(String response) { 
    ArrayList<Users> listUsers = new ArrayList<>(); 
    if (response != null || response.length() > 0) { 

     Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_LONG).show(); 

     JSONObject jsonObject = null; 
     try { 
      jsonObject = new JSONObject(response.toString()); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     //extracting json array from response string 
     JSONArray jsonArray = null; 
     try { 

      if (jsonObject.has("users")) { 

       jsonArray = jsonObject.getJSONArray("users"); 


       for (int z = 0; z < jsonArray.length(); z++) { 


        JSONObject currentUser = jsonArray.getJSONObject(z); 

        //String email = currentUser.getString("email"); 
        String fname = currentUser.getString("first_name"); 
        String lname = currentUser.getString("last_name"); 

        Users user = new Users(); 

        user.setFname(fname); 
        user.setLname(lname); 
        listUsers.add(user); 

       } 

      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     /* JSONObject jsonRow = null; 
     try { 
      jsonRow = jsonArray.getJSONObject(1); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     //get value from jsonRow 
     try { 
      String resultStr = jsonRow.getString("email"); 
      Log.d("Nishon", resultStr); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     }*/ 
    } 
    return listUsers; 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    finish(); 
} 

public void showNotification(View view) { 

} 

@Override 
public void onRefresh() { 
    swipeRefreshLayout.setRefreshing(true); 
    sendJsonRequest(); 
    swipeRefreshLayout.setRefreshing(false); 
} 

/*@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_POWER) { 
     // Do something here... 
     event.startTracking(); // Needed to track long presses 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 

} 
*/ 






} 

Der Webservice arbeitet.

Antwort

1

Dies bedeutet, dass Sie versuchen, die length() von String, die Null ist, zu erhalten.

Der Täter ist diese Zeile:

if (response != null || response.length() > 0) { 

Das bedeutet, wenn die Antwort nicht null ist OR es die Länge größer Null ist.

Was Sie wollen, ist:

if (response != null && response.length() > 0) { 

Dies wird die Anweisung fehl, wenn die Antwort null ist, weil, wenn es ist, können Sie nicht die Länge überprüfen.

Verwandte Themen