当前位置: 首页 > 知识库问答 >
问题:

在Android中获取活动位置时出错

史昊焱
2023-03-14

我必须将位置的实际值放入变量中,但我有这样一个错误:

java.lang.IllegalStateException: Could not execute method of the activity

我的代码是:

@Override
public void onLocationChanged(Location location) {
    mCurrentLocation = location;
    Latit = mCurrentLocation.getLatitude();

    Location objLoc = new Location("");
    objLoc.setLatitude(location.getLatitude());
    objLoc.setLongitude(location.getLongitude());
}

@Override
public void onConnected(Bundle bundle) {
    startLocationUpdates();
}

public void locInicio(View v) {
    TextView inicioLat = (TextView) findViewById(R.id.eInicioLat);
    Latit = mCurrentLocation.getLatitude();
    inicioLat.setText((int) Latit);

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.adicionar);
    buildGoogleApiClient();
}

在其他活动中,我可以使用onlocationchanged获取值,但它总是返回一个错误。

04-16 23:01:43.447 129 54-12954/greetrack.estg.ipvc.greentrack E/zygote:MountEmulatedStorage()04-16 23:01:43.447 129 54-12954/greetrack.estg.ipvc.greentrack E/zygote:v2 04-16 23:01:43.467 129 54-12954/greetrack.estg.ipvc.greentrack E/zygote:v2 04-16 23:01:43.467 129 54-12954/greetrack.estg.ipvc.greentrack E/selinux:[DEBUG]ACK e/viewrootimpl:sendUserActionEvent()mView==NULL 04-16 23:01:56.447 129 54-12954/greetrack.estg.ipvc.greentrack e/androidruntime:致命异常:main process:greetrack.estg.ipvc.greentrack,pid:12954 java.lang.IllegalStateException:无法在Android.view.view.view.view$1处执行活动的方法。onclick(view.java:4221)在Android.view.view.performclick((handler.java:739)在Android.os.handler.DispatchMessage(handler.java:95)在Android.os.looper.loop(looper.java:145)在Android.app.ActivityThreadmain(activitythread.java:5832),java.lang.reflect.Method.invoke(原生方法),java.lang.reflect.Method.invoke(Method.java:372),com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.jam.android.internal.os.zygoteinit.main(zygoteinit.java:1194),java.lang.reflect.Method.invoke(原生方法)1.OnClick(view.java:4216)               在Android.view.view.performClick(view.java:5155)             在Android.os.handler.handlecallback(handler.java:739)          在Android.os.handler.dispatchmessage(handler.java:95) 和NBSp; · · · · · · · · · 在Android.os.looper.loop(looper.java:145) · · · · · · · · · 在Android.app.activitythread.main(activitythread.java:5832)· · · · · · · · · · 在java.lang.reflect.Method.invoke(Method.java.reflect.Method.invoke(Method.java:372)· · · · · · · · · com.android.internal.os.zygoteinit.main(zygoteinit.java:1194)的 · · · · · · (zygoteinit.java:1194),原因是:java.lang.nullPointerException:试图在greetrack.estg.ipvc.greentrack.adicionar.locinicio(adicionar.java:53)的空对象引用上调用虚拟方法“double Android.location.location.getlatitude()”)              在java.lang.reflect.Method.invoke(原生方法)           在java.lang.reflect.Method.invoke(方法.java.reflect.Method.invoke(方法.java.reflect.Method.invoke)              在Android.view.view.view.view.view.view1.onclick(view.java:372)onclick(view.java:4216)   allback(handler.java:739) · · · · · · · · · · · 在Android.os.handler.dispatchmessage(handler.java:95) · · · · · · · · · 在Android.os.looper.loop(looper.java:145) · &nb · · · · · · · · 在Android.app.activitythread.main(activitythread.java:5832), · · · · · · · ·  在java.lang.reflect.Method.invoke(原生方法) · · · · · · 在java.lang.reflect.Method.invoke(Method.java:372)

共有1个答案

况安然
2023-03-14

java.lang.NullPointerException:试图在greetrack.estg.ipvc.greentrack.adicionar.locinicio(adicionar.java:53)的空对象引用上调用虚拟方法“double Android.location.location.getLatitude()”

您只需处理位置在onlocationchanged中为空的情况。例如,if(location==null)return;作为方法中的第一行。

@Override
public void onLocationChanged(Location location) {
    if (location == null) return;

    mCurrentLocation = location;
    Latit = mCurrentLocation.getLatitude();

    // by the way - why do you do this??
    Location objLoc = new Location("");
    objLoc.setLatitude(location.getLatitude());
    objLoc.setLongitude(location.getLongitude());
}

public void locInicio(View v) {
    TextView inicioLat = (TextView) findViewById(R.id.eInicioLat);

    // here is your problem
    if (mCurrentLocation == null) return; 

    Latit = mCurrentLocation.getLatitude();
    inicioLat.setText((int) Latit);

}
 类似资料:
  • 问题内容: 我在使用android定位系统的NETWORK提供程序获取当前位置坐标时遇到麻烦。 已经阅读了很多教程,并为我的项目实现了4到5个现有的类,所有这些类都给了我最后的坐标,而不是当前的坐标。 我很确定这个问题是我遗漏的根本问题,但是我无法理解到底是什么。 我现在正在使用的代码: 这是我的主要活动 这是我用于跟踪的课程: 这是我的AndroidManifest.xml 实际上,GPS定位工

  • 问题内容: 我对Android开发和Java超级陌生。这是基本设置:我有一个初始屏幕,带有来检查服务器的可用性。在此线程之后,我在活动中进行了回调。这比进行工作更有意义,因为我想在不同的活动中重用此任务。 但是,在我的回调中,我检查状态是否正常。如果是,它将启动下一个活动。但是从回调的上下文来看,我不知道如何获得我的引用,我需要将它作为Intent的参数。 这是我在Activity中OnCreat

  • 当我尝试用Google Maps活动模板打开一个新项目时,我会遇到以下错误。 错误:(3)检索项的父项时出错:找不到与给定名称“Android:TextApparance.Material.Widget.Button.Inverse”匹配的资源。 我对此完全陌生,我试着看过类似的帖子,但我无法理解那里给出的解释。 这些错误出现在名为google_maps_api.xml的文件中

  • 自从我将Android Studio从1.5更新到2.1以来,我已经多次遇到以下错误(不总是)。这是“运行”对话框的输出: 但奇怪的是,在logcat中什么也找不到。我真的不知道是什么原因导致了这种情况,因为这个错误并不能说明出了什么问题,除了StartActivity的启动出了问题(自更新以来,我几乎没有改变,甚至根本没有改变)。 我的清单文件: 有人知道如何解决这个问题吗? 编辑: 在我从lo

  • 公共类MapsActivity扩展了FragmentActivity实现了OnMapReadyCallback{ } 错误D/AndroidRuntime:正在关闭VM 02-25 16:31:40.313 153 30-15330/com.vivanta.location E/AndroidRuntime:致命异常:main process:com.vivanta.location,PID:15

  • 问题内容: 干杯,我正在尝试通过Android获取当前的GPS位置。我也遵循了这篇教程和Vogellas的文章。虽然没有用。使用LocationManager.NETWORK_PROVIDER时,无论我站在哪里,我总能得到51的纬度和9的经度。当使用LocationManager.GPS_PROVIDER时,我什么也没得到。 虽然使用GMaps时一切正常::S不知道为什么。如何像GMaps一样获取