我正在进行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)
{
}
}
}
答案 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");