2017-04-19 6 views
2

PlaceAutoComplete FragmentからプレースIDを取得し、別のアクティビティに渡そうとしています。他のアクティビティは、Places.GeoDataApi.getPlaceById()メソッドから必要な情報をすべて取得することによってプレースIDを取得し、ビューを膨張させることになっています。ここでPlaceAutoCompleteAPIのデータがビューに膨らんでいない

はPlaceAutoCompleteフラグメントが格納されているクラスです。

public class PlaceSearch extends AppCompatActivity { 
@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_place_search); 

    //Hiding SupportActionBar 
    try { 
     getSupportActionBar().hide(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    //PlaceAutoComplete Search Implementation 
    PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment) 
      getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment); 


    autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { 
     @Override 
     public void onPlaceSelected(Place place) { 
      Log.i(String.valueOf(this), "Place: " + place.getName() + "\nID: " + place.getId()); 
      String placeId = place.getId(); 
      try { 
       Intent intent = new Intent(PlaceSearch.this, PlaceDetailsFromSearch.class); 
       Bundle extras = new Bundle(); 
       extras.putString("placeID", placeId); 
       intent.putExtras(extras); 
       startActivity(intent); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void onError(Status status) { 
      Log.i(String.valueOf(this), "An error occurred: " + status); 
     } 
    }); 
}} 

そして、ここでは、私がデータを膨らませるためにしようとしているクラスです。

public class PlaceDetailsFromSearch extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

String placeId, placeName, placeAddress, placeContact; 
String placeWeblink; 
float placeRating; 
//Views References 
RatingBar ratingBar; 
TextView tv_place_name, tv_address, tv_call_info, tv_website_info; 
private GoogleApiClient mGoogleApiClient; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_place_details_search); 

    Intent intent = getIntent(); 
    if (intent != null) { 
     Bundle extras = intent.getExtras(); 
     placeId = extras.getString("placeId"); 
    } 

    //views 
    tv_place_name = (TextView) findViewById(R.id.tv_place_name_pd); 
    tv_address = (TextView) findViewById(R.id.tv_address); 
    tv_call_info = (TextView) findViewById(R.id.tv_call_info); 
    tv_website_info = (TextView) findViewById(R.id.tv_website_info); 
    ratingBar = (RatingBar) findViewById(R.id.rb_rating); 

    //Google API Client 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(Places.GEO_DATA_API) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this).build(); 

    loadData(); 
} 

private void loadData() { 
    Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId) 
      .setResultCallback(new ResultCallback<PlaceBuffer>() { 
       @Override 
       public void onResult(@NonNull PlaceBuffer places) { 
        if (places.getStatus().isSuccess()) { 
         final Place myPlace = places.get(0); 
         Log.i(String.valueOf(PlaceDetailsFromSearch.this), 
           "Place found: " + myPlace.getName() + "\n Address: " + myPlace.getAddress()); 
         placeName = (String) myPlace.getName(); 
         tv_place_name.setText(placeName); 
         placeAddress = (String) myPlace.getAddress(); 
         tv_address.setText(placeAddress); 
         placeContact = (String) myPlace.getPhoneNumber(); 
         tv_call_info.setText(placeContact); 
         placeRating = myPlace.getRating(); 
         placeWeblink = String.valueOf(myPlace.getWebsiteUri()); 
         tv_website_info.setText(placeWeblink); 
         placeRating = myPlace.getRating(); 
         ratingBar.setRating(placeRating); 

        } else { 
         Log.i(String.valueOf(PlaceDetailsFromSearch.this), String.valueOf(places.getStatus())); 
        } 
        places.release(); 
       } 
      }); 
}} 

そして、これは私とエラーになりますStringがnullであることに関する多くの情報はありません。

E/UncaughtException:java.lang.IllegalArgumentExceptionが:与えられた文字列がandroid.os.Parcel.readExceptionで空または ヌルである(Parcel.java:1688) android.os.Parcel.readExceptionで(小包。 java:1637) com.google.android.gms.location.places.internal.zzj $ zza $ zza.zzb(不明な情報源) com.google.android.gms.location.places.internal.zzh.zza (不明な情報源)

答えて

2

placeId = extras.getString( "placeId");

によって

placeId = extras.getString( "placeID")。 のonCreate()PlaceDetailsFromSearch.java活性方法で

。あなたの問題が解決されることを願っています。あなたはplaceIDを追加して、からPLaceSearch.javaアクティビティを渡しています。

+0

私はこの上に私の頭を失っていた!エラーは大文字と小文字の区別のためです –

+0

@GautamHansいつか起こります。 :) – MMBarno

+0

ありがとうございます。 :) –

関連する問題