如何将EditText值传递给onCreate Android?

时间:2013-12-05 14:05:26

标签: android google-maps google-maps-markers

我正在尝试在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);
    }
}

3 个答案:

答案 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");

现在您已经获得了传入的文本。希望这可以解决您的疑问。