2016-05-03 15 views
1

ich hol-lang Daten auf dem Longclick-Ereignis auf meiner Karte ab. das Problem ist, wenn ich Daten in meinem Dialog-Fragmente des EditText passieren, seine Null bekommen,wie man Daten in ein Dialog-Fragment von mapActivity einstellt

hier mein Code ist sehr lang, klicken Ereignis

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, 
     GoogleMap.OnMapClickListener, GoogleMap.OnMapLongClickListener, View.OnClickListener { 
    @Override 
     public void onMapLongClick(LatLng point) { 
      if(mMap != null) { 
       mMap.addMarker(new MarkerOptions().position(point).title(point.toString())); 
       double latitudeNew = point.latitude; 
       double longitude = point.longitude; 
       mLatLongArray.add(new double[]{latitudeNew, longitude}); 
       isMarkerClicked = false; 

       lat = String.valueOf(latitudeNew); 
       logt = String.valueOf(longitude); 

       Toast.makeText(getApplicationContext(),lat,Toast.LENGTH_SHORT).show(); 
      } 
     } 
} 

und im wie mit onbackpress zurück mit meiner Schaltfläche klicken Dies.

AddGeofenceFragment.ViewHolder fragment = new AddGeofenceFragment.ViewHolder(); 
@Override 
    public void onClick(View v) { 
     if (v.getId() == R.id.btnBackToFragment) { 
      String TAG = "com.rockstar.googlemap.AddGeofenceFragment"; 
      onBackPressed(); 
      // getSupportFragmentManager().beginTransaction().replace(R.id.dialogFrgment, new AddGeofenceFragment()).addToBackStack(TAG).commit(); 
      fragment.latitudeEditText.setText(lat); 
      fragment.longitudeEditText.setText(logt); 
     } 
    } 

enter image description here

hier ist mein Workflow, öffnen Sie zunächst i mein dialog-Fragment auf fab-Schaltfläche klicken, und offene Karte für get Breiten- und logtitude Daten,

enter image description here

mähen, wenn ich auf meine "goBackTOFragment" -Taste klicke meine App leider, ich verstehe nicht, was passiert, auch ich bekomme Daten über Longclick-Ereignis, ich überprüfte mit Toast , aber es geht nicht zu dem Fragment. es sagt Null-Zeiger Ausnahme auf dieser Linie

fragment.latitudeEditText.setText(lat); 
fragment.longitudeEditText.setText(logt); 

i beide String-Daten lat und lügen in meinem vorherigen Dialog-Fragmente des EditText setzen will, ich weiß nicht, wie die Daten in Fragmente passieren, wie ich das tun. Bitte hilf mir. Ich schätze das sehr.

+0

Ist die neue Aktivität Kartenbildschirm? – Blackkara

+0

ja, es ist nicht Launcher Aktivität .. es ist offen, wenn ich auf den Dialog-Fragment Karte Button Bild klicken –

+0

Sie können versuchen, Fragment # setArguments(). – twlkyao

Antwort

1

Wenn Sie die Karte Aktivität verwenden nur lat/lng bekommen, könnte es wie dieses

Intent intent = new Intent(this, MapsActivity.class); 
startActivityForResult(intent, 1); 

Und dann gestartet werden, wenn Sie die Taste Zurück-Taste (MapsActivity)

Intent position = new Intent(); 
position.putExtra("lat", lat); 
position.putExtra("lng", lng); 
setResult(1, position);  
finish(); 

Wieder Ihre erste Aktivität, Sie haben Position von der Karte erhalten. U kann Felder des Dialogfragments verwenden. In Ihrem Fall verlieren Sie die Dialogfragmentinstanz.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(resultCode == 1){ 
     double lat = intent.getDoubleExtra("lat", -1); 
     double lng = intent.getDoubleExtra("lng", -1); 
    } 

} 

Ich denke, dieser Ansatz besser für Ihren Fall. Auch können Sie überprüfen, tief aus here

EDIT

ich auch Ihre neueste Update auf die Frage Post sah.

AddGeofenceFragment.ViewHolder fragment = new AddGeofenceFragment.ViewHolder(); 

@Override 
public void onClick(View v) { 
    ... 
    fragment.latitudeEditText.setText(lat); 
    fragment.longitudeEditText.setText(logt); 
} 

Diese falsch, mit dieser Verwendung Instanziieren Sie nur, nicht Methode der DialogFragment Aufruf onCreateView. Überprüfen Sie dies unter

In der ersten Aktivität rufe ich AddGeofenceFragment zum ersten Mal. Außerdem wird die Fragment-Instanz für die spätere Verwendung beibehalten.

FragmentManager fm = getSupportFragmentManager(); 
    AddGeofenceFragment dialogInstance = new AddGeofenceFragment(); 
    AddGeofenceFragment.show(fm, "AddGeofenceFragment"); 

In Maps Aktivität, ich wähle Position.

public void onMapLongClick(LatLng point) { 
    Intent position = new Intent(); 
    position.putExtra("lat", point.latitude); 
    position.putExtra("lng", point.longitude); 
    setResult(1, position);  
    finish(); 
} 

In erster Aktivität, ich bin immer die Position

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(resultCode == 1){ 
     double lat = intent.getDoubleExtra("lat", -1); 
     double lng = intent.getDoubleExtra("lng", -1); 
     dialogInstance.latitudeEditText.setText(lat); 
     dialogInstance.longitudeEditText.setText(lng); 
    } 

} 
+0

gibt es ein Problem mein Dialog wird entlassen und ich kann nicht Daten in Edittext speichern –

+0

Ja, weil Sie Dialog Fragment verloren. In diesem Ansatz sollte es nicht passieren – Blackkara

+0

dann wie können Daten in der Dialogbox edittext speichern .. gibt es eine Lösung? –

Verwandte Themen