Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将位置数据传递给Android中的另一个活动_Java_Android - Fatal编程技术网

Java 将位置数据传递给Android中的另一个活动

Java 将位置数据传递给Android中的另一个活动,java,android,Java,Android,我正在进行Android应用程序开发,我被困在这一点上: 我有两项活动: 第一个叫CurrentLoc,它得到了我当前的位置,在得到位置后,我点击一个按钮,把我带到活动2,这叫短信 我需要做的是,当我点击按钮时,我想将我在第一个活动中收到的位置数据传递给第二个活动 以下是我的第一个活动代码: public class Tester2Activity extends Activity { @Override public void onCreate(Bundle save

我正在进行Android应用程序开发,我被困在这一点上:

我有两项活动: 第一个叫CurrentLoc,它得到了我当前的位置,在得到位置后,我点击一个按钮,把我带到活动2,这叫短信

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

以下是我的第一个活动代码:

    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)
        {
        }


    }

}

使用
Intent
extras:在调用
startActivity
之前,只需使用
Intent.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);
}
然后您可以使用在第二个活动中检索值。

在第一个活动中

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

感谢您的帮助,但它没有起作用,因为Intent无法从onLocationChanged方法读取任何内容,我不知道为什么?您需要从onLocationChanged方法调用Intent?您只需在获取loc.getLatitude()和loc.getLongitude()时将值赋给两个变量lat,lon按我说的,点击按钮调用活动;我试过了,但同样的问题仍然存在…ON按钮点击无法读取意图,即(hg),因此我无法启动第二个活动…提前感谢…@Rasel请查看我的相关问题:您可以使用outState.putParcelable(“键”,位置)传递它因为Location implement Parcelable interfaceThanks为您提供帮助,我也这么做了,但不起作用,我认为按钮是问题所在…所以我必须在哪里单击按钮…再次感谢。请参阅我的相关问题:您解决了您的问题吗?