2016-04-16 4 views
1

Googleマップで作業していて、ジオコーディングを使用して位置情報にアクセスできるようにしたいが、動作していますが、私のアプリはクラッシュします。 これは私のコードです:(検索ボタンのクリックで)ジオコーダを使用して無効またはnullの位置を入力するとクラッシュする

public void onSearch(View view) { 
     EditText addressSearch = (EditText) findViewById(R.id.edtSearchAddress); 
     String location = addressSearch.getText().toString(); 
     List<Address> addressList = null; 
     if (location != null || !location.equals("")) { 
      addressSearch.setText(""); 
      Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 

      try { 
       addressList= geocoder.getFromLocationName(location, 7); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      // location exists 
      Address address = addressList.get(0); 
      LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude()); 
      map.addMarker(new MarkerOptions().position(latLng).title("Find Pro")); 
      map.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 

     } else { 
      addressSearch.setText("Location does not exist"); 
     } 

    } 

あなたの種類のサポートが理解されるであろう。

答えて

0

documentationによれば、geocoder.getFromLocationNameのコールはIllegalArgumentExceptionを返すか、空のリストを返すことができます。両方のケースでアプリがクラッシュします。私のリストは空です。

だからあなたのコードは、ガード:

if (addressList.size() > 0) { 
     Address address = addressList.get(0); 
     LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude()); 
     map.addMarker(new MarkerOptions().position(latLng).title("Find Pro")); 
     map.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 
} 
+0

私の時間を保存しました。ありがとうございました。ありがとうございました。 :) – Pihu

0

あなたはその時のアドレスリストの戻り0値はnull値を渡すときにアドレスリストからGET値の前にIF条件を設定してください。

if (addressList.size() > 0) { 
Address address = addressList.get(0); 
} 
関連する問題