【问题标题】:Error getting location on Activity in Android在 Android 的 Activity 上获取位置时出错
【发布时间】:2015-06-23 13:29:20
【问题描述】:

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

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 12954-12954/greetrack.estg.ipvc.greentrack E/Zygote﹕MountEmulatedStorage() 04-16 23:01:43.447 12954-12954/greetrack.estg.ipvc.greentrack E/Zygote:v2 04-16 23:01:43.467 12954-12954/greetrack.estg.ipvc.greentrack E/SELinux﹕ [DEBUG] get_category:变量 seinfo:默认灵敏度:NULL, 类别:NULL 04-16 23:01:55.647 12954-12954/greetrack.estg.ipvc.greentrack E/ViewRootImpl﹕ sendUserActionEvent() mView == null 04-16 23:01:56.447 12954-12954/greetrack.estg.ipvc.greentrack E/AndroidRuntime:致命 例外:主要 进程:greetrack.estg.ipvc.greentrack,PID:12954 java.lang.IllegalStateException:无法执行活动的方法 在 android.view.View$1.onClick(View.java:4221) 在 android.view.View.performClick(View.java:5155) 在 android.view.View$PerformClick.run(View.java:20747) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:5832) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 引起:java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 android.view.View$1.onClick(View.java:4216) 在 android.view.View.performClick(View.java:5155) 在 android.view.View$PerformClick.run(View.java:20747) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:5832) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 引起:java.lang.NullPointerException:尝试调用虚拟方法'double android.location.Location.getLatitude()' 空对象引用 在 greetrack.estg.ipvc.greentrack.Adicionar.locInicio(Adicionar.java:53) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 android.view.View$1.onClick(View.java:4216) 在 android.view.View.performClick(View.java:5155) 在 android.view.View$PerformClick.run(View.java:20747) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:5832) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372)

【问题讨论】:

  • 发布完整的堆栈跟踪。
  • 好的,我看看我的问题
  • 您只需要处理onLocationChanged 中位置为空的情况。例如if (location == null) return; 作为方法中的第一行。

标签: android google-maps


【解决方案1】:

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

}

【讨论】:

  • 但这是我的问题,位置始终为空
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多