Ich versuche, den Google Placepicker aus einem Fragment, das Teil meiner Android App ist, zu verwenden. Ich kann nicht scheinen, die Daten zu verwenden, die von onActivityResult zurückgegeben werden. Ich verwendete eine Lösung von (https://inthecheesefactory.com/blog/how-to-fix-nested-fragment-onactivityresult-issue/en), um die Ergebnisse innerhalb eines Fragments zu erhalten. Allerdings erlaubt mir diese Lösung nicht, Elemente in meiner Ansicht basierend auf der Eingabe von meinem PlacePicker zu ändern. Der Toast mit der Ortsinfo funktioniert, aber ändert den Knopf nicht, weil er außerhalb der aufgeblasenen Ansicht ist. Ich verwende Fragmente, da meine App eine Tabulator-App mit 2 Fragmenten ist, die den Standort und die Anzeigeorte erstellt.Verwenden von PlacePicker in einem Fragment
Bitte helfen Sie und bitten Sie bei Bedarf um Klärung!
Hier ist die onCreateView in myFragment erstreckt Fragmente Klasse:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_make_minyan, container, false);
//Map Place Activity
final Button locationButton = (Button) rootView.findViewById(R.id.button_location);
locationButton.setOnClickListener(new View.OnClickListener() {
//int RESULT_OK;
public void onClick(View v) {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
getActivity().startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
}
});
//a bunch of other buttons and spinner etc that are working.
return rootView;
}
Und hier ist der onActivityResult Code aus der Lösung oben verlinkten verwendet. Die auskommentierte Zeile ist die Codezeile, die derzeit nicht funktioniert.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PLACE_PICKER_REQUEST) {
if (resultCode == Activity.RESULT_OK) {
Place place = PlacePicker.getPlace(data, getActivity());
//locationButton.setText(String.format("Place: %s", place.getName()));
String toastMsg = String.format("Place: %s", place.getName());
Toast.makeText(getContext(), toastMsg, Toast.LENGTH_LONG).show();
}
}
}