将位置数据传递到Android中的其他活动

时间:2011-07-27 03:43:58

标签: java android

我正在进行Android应用程序开发,我陷入了这一步:

我有2项活动: 第一个叫做CurrentLoc,它让我获得当前位置,在获得位置后,我点击一个按钮,将我带到2号活动,称为Sms。

我需要做的是,当我点击按钮时,我想将我在第一个活动中收到的位置数据传递给第二个活动...

先谢谢你们所有人......

以下是第一项活动的代码:

public class Tester2Activity extends Activity { 
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    startService(new Intent(Tester2Activity.this,SS.class));

    LocationManager mlocManager = (LocationManager)getSystemService       (Context.LOCATION_SERVICE);
    LocationListener mlocListener = new MyLocationListener();
    mlocManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0,     mlocListener);


    Button button1 = (Button) findViewById(R.id.widget30);
     button1.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {

              Intent hg = new Intent(Tester2Activity.this, Sms.class);
              startActivity(hg);



    }
});



    public class MyLocationListener implements LocationListener
{

    @Override
    public void onLocationChanged(Location loc)
    {
        loc.getLatitude();
                   loc.getLongitude();

              //This is what i want to pass to the other activity when i click on the button


    }


    @Override
    public void onProviderDisabled(String provider)
    {

    }

    @Override
    public void onProviderEnabled(String provider)
    {

    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras)
    {
    }


}

}

2 个答案:

答案 0 :(得分:6)

使用Intent额外内容:您可以在致电Intent.putExtra之前使用startActivity将位置纬度和经度复制到意图中。

编辑:实际上,位置为Parcelable,因此您可以使用putExtra将其直接传递给Intent,如下所示:

@Override
    public void onLocationChanged(Location loc)
    {
        passToActivity(log);
    }

然后将passToActivity定义为

void passToActivity(Location loc)
{
   Intent i = new Intent();

   // configure the intent as appropriate

   // add the location data
   i.putExtra("LOCATION", loc);
   startActivity(i);
}

然后您可以使用getParcelableExtra检索第二个Activity中的值。

答案 1 :(得分:1)

在您的FirstActivity中

Intent hg = new Intent(Tester2Activity.this, Sms.class);
hg.putExtra("latitude",""+latitude);
hg.putExtra("longitude",""+longitude);
startActivity(hg);

在第二项活动中

Bundle bundle = getIntent().getExtras();
             double lat=bundle.getDouble("latitude");
             double lon=bundle.getDouble("longitude");