2013-09-11 4 views
0

Я застрял на этом. Надеюсь, ты поможешь мне. Я получил приложение для мест. И я все еще продолжаю получать ошибки от людей, которые его используют. Я не могу найти решение. Так что это mesasge ошибка я получаю:Nullpointerexception в моей mainactivity нет результатов

java.lang.NullPointerException 
at com.laurenswuyts.find.it.MainActivity$LoadPlaces$1.run(MainActivity.java:297) 
at android.app.Activity.runOnUiThread(Activity.java:4631) 
at com.laurenswuyts.find.it.MainActivity$LoadPlaces.onPostExecute(MainActivity.java:291) 
at com.laurenswuyts.find.it.MainActivity$LoadPlaces.onPostExecute(MainActivity.java:1) 
at android.os.AsyncTask.finish(AsyncTask.java:631) 
at android.os.AsyncTask.access$600(AsyncTask.java:177) 
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4918) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
at dalvik.system.NativeStart.main(Native Method) 

А вот часть моего mainactivity:

protected void onPostExecute(String file_url) { 
      // dismiss the dialog after getting all products 
      pDialog.dismiss(); 
      // updating UI from Background Thread 
      runOnUiThread(new Runnable() { 
       public void run() { 
        /** 
        * Updating parsed Places into LISTVIEW 
        * */ 
        // Get json response status 

        if (nearPlaces.results != null) { 
        String status = nearPlaces.status; 

        // Check for all possible status 
        if(status.equals("OK")){ 
         // Successfully got places details 
         if (nearPlaces.results != null) { 




          // loop through each place 
          for (Place p : nearPlaces.results) { 


           HashMap<String, String> map = new HashMap<String, String>(); 

           // Place reference won't display in listview - it will be hidden 
           // Place reference is used to get "place full details" 
           map.put(KEY_REFERENCE, p.reference); 

           //Distance 
           double dist, dist2, dist3, dist4; 
           int dist5; 
           String distance, distance2, distance3; 
           Double piem1, piem2; 
           String piem3, piem4; 
           double lat1 = gps.getLatitude(); 
           double lng1 = gps.getLongitude(); 
           double lat2 = p.geometry.location.lat; 
           double lng2 = p.geometry.location.lng; 

           dist = distance(lat1,lng1,lat2,lng2); 

           if(dist < 1) { 
            double meterConversion = 1.609; 
            double feetConversion = 5.208; 
            String locale = Locale.getDefault().getISO3Country(); 
            if(locale.equals("USA")){ 
             dist2 = dist * feetConversion; 
             dist3 = round(dist2,3); 
             dist4 = dist3 * 1000; 
             dist5 = (int)dist4; 
             distance = String.valueOf(dist5);         
             distance2 = distance + " ft"; 
            } 
            else{ 
            dist2 = dist * meterConversion; 
            dist3 = round(dist2,3); 
            dist4 = dist3 * 1000; 
            dist5 = (int)dist4; 
            distance = String.valueOf(dist5);         
            distance2 = distance + " m";} 
           } 
           else { 


           dist3 = round(dist,1); 

           String locale = Locale.getDefault().getISO3Country(); 
           if(locale.equals("USA")){ 
            distance = Double.toString(dist3); 
            distance2 = distance + " mi"; 
           } 
           else{ 
            double meterConversion = 1.609; 
            dist2 = dist * meterConversion; 
            dist3 = round(dist2,1); 
            distance = Double.toString(dist3); 
           distance2 = distance + " km"; 
           } 
           } 

           piem1 = p.geometry.location.lat; 
           piem2 = p.geometry.location.lng; 
           piem3 = Double.toString(piem1); 
           piem4 = Double.toString(piem2); 
           distance3 = piem3 + "," + piem4; 
           map.put(KEY_DISTANCE, distance2); 

           // Place name 
           map.put(KEY_NAME, p.name); 




           //Vicinity 
           map.put(KEY_VICINITY, p.vicinity); 

           //Location 
           map.put(KEY_LOCATION, distance3); 


            if(p.photos != null){ 
           map.put(KEY_TRUE, "speeltijd"); 
           map.put(KEY_IMAGE, "https://maps.googleapis.com/maps/api/place/photo?maxwidth=65&photoreference="+p.photos[0].photo_reference +"&sensor=true&key=AIzaSyBqUEZXSjwqbXGfEJEO99rQAL8puy11GVg"); 
          }else{ 
           map.put(KEY_TRUE, "school"); 
            } 
           placesListItems.add(map); 

          } 

          lv=(ListView)findViewById(R.id.list); 


          // Getting adapter by passing xml data ArrayList 
          adapter = new LazyAdapter(MainActivity.this, placesListItems); 
          lv.setAdapter(adapter); 

          // list adapter 
         /** ListAdapter adapter = new SimpleAdapter(MainActivity.this, placesListItems, 
            R.layout.list_item, 
            new String[] { KEY_REFERENCE, KEY_NAME, KEY_VICINITY, KEY_DISTANCE, KEY_LOCATION}, new int[] { 
              R.id.reference, R.id.name, R.id.vicinity, R.id.radius, R.id.location}); 

          // Adding data into listview 
          lv.setAdapter(adapter);**/ 




         } 
         else 
         { 
          alert.showAlertDialog(MainActivity.this, "Places Error", 
            "Sorry error occured.", 
            false); 


         } 

        } 
        else if(status.equals("ZERO_RESULTS")){ 
         // Zero results found 

         alert.showAlertDialog(MainActivity.this, "Near Places", 
           "Sorry no places found. Try to change the types of places", 
           false); 

        } 
        else if(status.equals("UNKNOWN_ERROR")) 
        { 
         alert.showAlertDialog(MainActivity.this, "Places Error", 
           "Sorry unknown error occured.", 
           false); 

        } 
        else if(status.equals("OVER_QUERY_LIMIT")) 
        { 
         alert.showAlertDialog(MainActivity.this, "Places Error", 
           "Sorry query limit to google places is reached", 
           false); 

        } 
        else if(status.equals("REQUEST_DENIED")) 
        { 
         alert.showAlertDialog(MainActivity.this, "Places Error", 
           "Sorry error occured. Request is denied", 
           false); 

        } 
        else if(status.equals("INVALID_REQUEST")) 
        { 
         alert.showAlertDialog(MainActivity.this, "Places Error", 
           "Sorry error occured. Invalid Request", 
           false); 

        } 
        else 
        { 
         alert.showAlertDialog(MainActivity.this, "Places Error", 
           "Sorry error occured.", 
           false); 


        } 
        }else { 
         alert.showAlertDialog(MainActivity.this, "Places Error", 
           "Sorry unknown error occured.", 
           false); 
         } 
       } 
      }); 


     } 

Номер строки 291 начинается в runOnUiThread (новый Runnable() Это линия номер 291 .

заранее спасибо

ответ

2

onPostExecute() уже на пользовательском интерфейсе Thread. Вам не нужно вызов runOnUiThread(). Также есть строка 297 if(nearPlaces.results != null) {...? находится рядом с NULL в этой точке?

+0

Да строка 297 есть, если (nearPlaces.results! = Null) {... Обычно он должен иметь результаты .. – Laurenswuyts

+0

@ user1827512 Это не так. Даже весь 'nearPlaces' является' null'. – zapl

+0

Как я могу это исправить? – Laurenswuyts

0

Вы updaing UIThread в должность в качестве AsyncTask ..

AsyncTask должны быть подклассы, которые будут использоваться. Подкласс переопределяет по крайней мере один метод (doInBackground (Params ...)), и чаще всего будет переопределить второй (onPostExecute (Result).)

проверить это: Asynctask

в вещи, которые вы делаете в runOnUiThread(), делайте их в doInBackground, а затем публикуйте результаты в onPostExecute

0

Ваши близлежащиеМетки являются пустыми. Проверь это.

Смежные вопросы