2017-07-31 6 views
0

Dans mon application, je souhaite définir le nom du lieu dans la barre d'applications.Modifier le texte dans la barre d'application à partir de setResultCallback

ID d'endroit que je reçois de l'activité précédente et dans l'activité actuelle je veux obtenir cet endroit par ID, j'utilise la documentation de Google Api Places for Android mais mon code n'a pas fonctionné.

public class PlaceInfoActivity extends AppCompatActivity implements OnConnectionFailedListener { 
    @BindView(R.id.placeinfo_toolbar) Toolbar mToolbar; 

    private static final String TAG = "place info"; 
    private Place place; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_place_info); 
     ButterKnife.bind(this); 

     final String placeID = getIntent().getStringExtra("PLACE_ID"); 

     setSupportActionBar(mToolbar); 
     ... 
     Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId) 
      .setResultCallback(new ResultCallback<PlaceBuffer>() { 
       @Override 
       public void onResult(PlaceBuffer places) { 
        if (places.getStatus().isSuccess() && places.getCount() > 0) { 
         place = places.get(0); 
         Log.i(TAG, "Place found: " + myPlace.getName()); 
        } else { 
         Log.e(TAG, "Place not found"); 
        } 
        places.release(); 
       } 
      }); 
     if (getSupportActionBar() != null) { 
      getSupportActionBar().setTitle(place.getName()); // <- place is null 
     } 
    } 
} 

Comme je l'ai compris, la méthode getPlaceById() fonctionne sur le principe d'une tâche asynchrone, mais alors comment puis-je déterminer quand place sera réinitialisée et modifier le texte dans la barre d'application? Je vous remercie!

Répondre

0

Essayez cette modification dans votre code. Vous devriez mettre à jour votre titre depuis le rappel

Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId) 
     .setResultCallback(new ResultCallback<PlaceBuffer>() { 
    @Override 
    public void onResult(PlaceBuffer places) { 
     if (places.getStatus().isSuccess() && places.getCount() > 0) { 
      place = places.get(0); 
      Log.i(TAG, "Place found: " + myPlace.getName()); 
     } else { 
      Log.e(TAG, "Place not found"); 
     } 
     places.release(); 
     if (getSupportActionBar() != null) { 
      getSupportActionBar().setTitle(place.getName()); // <- Move this to inside the callback 
     } 
    } 
}); 
+0

J'ai déjà essayé, le titre ne change pas – Alex