Fragment页面有一个EditText,我设置了OnClickListener。当我单击EditText时,它将转到地图活动。纬度在地图活动中获得并将其发送回片段。当我回到片段时,纬度应该显示在EditText上。但是,EditText上没有任何内容。我该如何解决这个问题?
final EditText latitude=(EditText)getActivity().findViewById(R.id.latitude);
latitude.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences sharedPreferences=getActivity().getSharedPreferences("test", Context.MODE_PRIVATE);
String lat=sharedPreferences.getString("latitude","");
String lon=sharedPreferences.getString("longitude","");
Intent intent=new Intent(getContext(),MapsActivity.class);
startActivity(intent);
latitude.setText(lat);
}
});
这是片段页面中的代码。 public void onMapReady(GoogleMap googleMap){ mMap = googleMap;
LatLng hk=new LatLng(latitude,longitude);
final Marker Place=mMap.addMarker(new MarkerOptions().position(hk).title("HK").draggable(true));
mMap.moveCamera(CameraUpdateFactory.newLatLng(hk));
mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker marker) {
LatLng location=Place.getPosition();
Double lat=location.latitude;
String lat2=lat.toString();
Double lon=location.longitude;
String lon2=lon.toString();
SharedPreferences sharedPreferences=getSharedPreferences("test", MODE_PRIVATE);
sharedPreferences.edit().putString("latitude",lat2).putString("longitude",lon2).commit();
Place.setTitle("latitude"+lat2+"\n"+"longitude"+lon2);
}
@Override
public void onMarkerDrag(Marker marker) {
}
@Override
public void onMarkerDragEnd(Marker marker) {
}
});
}
这是地图活动中的代码。
答案 0 :(得分:0)
使用startActivityForResult()
final EditText latitude=(EditText)getActivity().findViewById(R.id.latitude);
latitude.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(getContext(),MapsActivity.class);
startActivityForResult(intent,001);
}
});
在此活动中,将此方法传递给您的片段。
Fragment your_fragment;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
fragmenet.onActivityResult(requestCode, resultCode, data);
}
在你的片段类中输入此代码
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
latitude.setText(data.getDoubleExtra("lat",0)+ "," +data.getDoubleExtra("lng",0));
}
在下一个活动中
mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker marker) {
LatLng location=Place.getPosition();
Intent intent = new Intent();
intent.putExtra("lat", location.latitude);
intent.putExtra("lat", location.longitude);
setResult(001, intent);
finish();
}
@Override
public void onMarkerDrag(Marker marker) {
}
@Override
public void onMarkerDragEnd(Marker marker) {
}
});