2016-07-11 14 views
2

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(); 
     } 
    } 
} 

Antwort

0

Wenn Sie getActivity(). StartActivityForResult (...) schreiben, dann wird die onActivityResult in Ihrer Aktivität aufgerufen werden und nicht in Ihrem Fragmente.

Versuchen Sie einfach mit startActivityForResult (...)