Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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
Javascript 在phonegap中实例化一个新类_Javascript_Android_Cordova - Fatal编程技术网

Javascript 在phonegap中实例化一个新类

Javascript 在phonegap中实例化一个新类,javascript,android,cordova,Javascript,Android,Cordova,我想将一个值从本机android发送到JavaScript。我试着像下面这样做,但我得到了nullPointerException,我问了这个问题,一个人对我说,我不应该用new实例化一个活动!但我不知道如何解决这个问题,如何声明这个类,如何从这个类调用loadUrl()或sendJavascriptInterface()(没有主计算,我的意思是在新类中使用这个方法)。我写这段代码。我知道用new声明类是错误的,但我不知道如何解决这个问题!:( GPSLocationListener: publ

我想将一个值从本机android发送到JavaScript。我试着像下面这样做,但我得到了nullPointerException,我问了这个问题,一个人对我说,我不应该用new实例化一个活动!但我不知道如何解决这个问题,如何声明这个类,如何从这个类调用loadUrl()或sendJavascriptInterface()(没有主计算,我的意思是在新类中使用这个方法)。我写这段代码。我知道用new声明类是错误的,但我不知道如何解决这个问题!:(

GPSLocationListener:

public class GPSLocationListener implements LocationListener{

@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if (location != null) {
    GPScls MyGPS= new GPScls();
    Log.e(""+location.getLatitude(), ""+location.getLongitude());
    MyGPS.GPS(location.getLatitude(),location.getLongitude());

}
}

 @Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub

}

@Override
 public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub

 }

 }
GPSCL:

public class GPScls extends DroidGap {
public void GPS(double latitude,double longitude) {
super.loadUrl("javascript:GPS("+latitude+","+longitude+");");
//this.sendJavascript("javascript:GPS("+latitude+","+longitude+")");
}
 }
我搜索了大约两天,但我无法理解:(

请帮助我,我可以写一个正确的代码!
感谢您的建议

在html文件中添加参数以获取所需值。然后在html脚本标记中添加以下函数以从html url获取值

function getURLParameter(name) 
{
            return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null
        }
然后在文档加载中调用getURLParameter以获取值

var longitude=getURLParameter('longitude');
 var latitude=getURLParameter('latitude');
你们班

public class Test extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new GPSLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000,
        0, locationListener);


        super.loadUrl("file:///android_asset/www/index.html?longitude="+longitude+"&latitude="+latitude);
Log.e("run javascript func from native android", "");


 }
}

感谢回复,但我想从gps android获取地理位置,我有目标,检查如何调用并向JS发送变量。如何在sencond类中调用loadUrl而不是主Cals(测试类)?如果你想获得地理位置,则无需添加其他类。在phonegap中有获取地理位置的api。如果你想,我可以发送代码以获得地理位置。我知道phonegap中有获取lat和long的插件。但我想练习这个,为此我希望发送lat和long,而不是使用插件。谢谢你的帮助。我使用phonegap 2.9yo你可以用android的phonegap插件来实现这一点。如果你只是想要lat和lon,你不能直接使用javascript
public class Test extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new GPSLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000,
        0, locationListener);


        super.loadUrl("file:///android_asset/www/index.html?longitude="+longitude+"&latitude="+latitude);
Log.e("run javascript func from native android", "");


 }
}