我正在尝试在onCreate中传递EditText值。 (我不认为这是可能的,但我不知道该怎么办!)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google_maps);
}
public void userClick(View v) {
EditText mEditText1 = (EditText)findViewById(R.id.number1i);
String val1 = mEditText1.getText().toString();
EditText mEditText2 = (EditText)findViewById(R.id.number2i);
String val2 = mEditText2.getText().toString();
double dVal1 = Double.parseDouble(val1);
double dVal2 = Double.parseDouble(val2);
marker(dVal1,dVal2);
}
marker(double Lat, double Long) {
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(Lat,Long)));
}
当我运行应用时,Google Maps API中没有标记(用户通过EditText设置纬度和经度值)
我无法在onCreate中添加EditText值,因为它们将变为空。
如何在onCreate方法中传递用户设定值,即
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google_maps);
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(Lat,Long)));
}
这显然给我一个错误,因为Lat和Long无法识别。
我通过onClick从EditText按钮调用下面的方法,然后调用上一个我想放置EditText值的方法
public class UserInput extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.input);
}
public void Input(View v) {
Intent i = new Intent(v.getContext(), UserInput.class);
startActivity(i);
}
}
答案 0 :(得分:2)
如果您想将数据从一个活动传递到另一个活动,您只需将其添加到意图:
Intent intent = new Intent(this, OtherActivity.class);
EditText editText = getViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(OtherActivity.KEY, message);
startActivity(intent);
并在OtherActivity中访问此数据:
public static final KEY = "my_data_key";
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
if(intent != null) {
String value = intent.getStringExtra(KEY);
}
}
答案 1 :(得分:1)
如果你在一个活动中有EditText和Map,你应该这样。
private GoogleMap mMap;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google_maps);
setUpMapIfNeeded();
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
// Do a null check to confirm that we have not already instantiated the
// map.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
// Check if we were successful in obtaining the map.
}
}
public void userClick(View v) {
EditText mEditText1 = (EditText)findViewById(R.id.number1i);
String val1 = mEditText1.getText().toString();
EditText mEditText2 = (EditText)findViewById(R.id.number2i);
String val2 = mEditText2.getText().toString();
double dVal1 = Double.parseDouble(val1);
double dVal2 = Double.parseDouble(val2);
marker(dVal1,dVal2);
}
marker(double Lat, double Long) {
LatLng curLocation = new LatLng(Lat, Long);
mMap.addMarker(new MarkerOptions().position(curLocation).title("Marker"));
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(curLocation, 13);
mMap.animateCamera(cameraUpdate);
}
答案 2 :(得分:0)
如果您从另一个活动传递edittext数据,那么您需要获取该活动中的数据并设置有效负载,如下所示:
String lat = myLatitudeEditText.getText().toString();
String long = myLongitudeEditText.getText().toString();
Intent myIntent = new Intent(getApplicationContext(), secondActivity.class);
myIntent.putExtra("lat",lat);
myIntent.putExtra("long",long);
startActivity(myIntent);
现在在第二项活动的onCreate中:
String latitude = getIntent().getExtras().getString("lat");
String longitude = getIntent().getExtras().getString("long");
现在您已经获得了传入的文本。希望这可以解决您的疑问。