Java 致命异常:主Android
嗨,我是android开发的新手。我试图使用GPS获取用户坐标,我得到的错误是致命异常:主Android 这是我的密码Java 致命异常:主Android,java,android,gps,Java,Android,Gps,嗨,我是android开发的新手。我试图使用GPS获取用户坐标,我得到的错误是致命异常:主Android 这是我的密码 package lk.adspace.finetech; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationLi
package lk.adspace.finetech;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class Main extends Activity implements LocationListener {
TextView viewlocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L,1.0f, this);
boolean isGPS = locationManager.isProviderEnabled (LocationManager.GPS_PROVIDER);
if (isGPS){
}else{
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
}
String locationProvider = LocationManager.GPS_PROVIDER;
locationManager.requestLocationUpdates(locationProvider, 400, 1, this);
// Location loc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Location loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
viewlocation = (TextView) findViewById(R.id.location);
viewlocation.setText("My Current location \n Latitude = "+ loc.getLatitude()+" \n Longitude = "+ loc.getLongitude());
}
...
}
这就是我得到的错误
08-20 12:08:37.436: E/AndroidRuntime(25888): FATAL EXCEPTION: main
08-20 12:08:37.436: E/AndroidRuntime(25888): java.lang.RuntimeException: Unable to start activity ComponentInfo{lk.adspace.finetech/lk.adspace.finetech.Main}: java.lang.NullPointerException
08-20 12:08:37.436: E/AndroidRuntime(25888): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
08-20 12:08:37.436: E/AndroidRuntime(25888): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
08-20 12:08:37.436: E/AndroidRuntime(25888): at android.app.ActivityThread.access$600(ActivityThread.java:162)
08-20 12:08:37.436: E/AndroidRuntime(25888): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
08-20 12:08:37.436: E/AndroidRuntime(25888): at android.os.Handler.dispatchMessage(Handler.java:107)
08-20 12:08:37.436: E/AndroidRuntime(25888): at android.os.Looper.loop(Looper.java:194)
08-20 12:08:37.436: E/AndroidRuntime(25888): at android.app.ActivityThread.main(ActivityThread.java:5371)
08-20 12:08:37.436: E/AndroidRuntime(25888): at java.lang.reflect.Method.invokeNative(Native Method)
08-20 12:08:37.436: E/AndroidRuntime(25888): at java.lang.reflect.Method.invoke(Method.java:525)
08-20 12:08:37.436: E/AndroidRuntime(25888): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
08-20 12:08:37.436: E/AndroidRuntime(25888): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
08-20 12:08:37.436: E/AndroidRuntime(25888): at dalvik.system.NativeStart.main(Native Method)
08-20 12:08:37.436: E/AndroidRuntime(25888): Caused by: java.lang.NullPointerException
08-20 12:08:37.436: E/AndroidRuntime(25888): at lk.adspace.finetech.Main.onCreate(Main.java:68)
08-20 12:08:37.436: E/AndroidRuntime(25888): at android.app.Activity.performCreate(Activity.java:5122)
08-20 12:08:37.436: E/AndroidRuntime(25888): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
08-20 12:08:37.436: E/AndroidRuntime(25888): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
08-20 12:08:37.436: E/AndroidRuntime(25888): ... 11 more
有人能帮我解决这个问题吗。tnx.第68行存在空指针异常 我认为下面的loc返回为null。请查收
Location loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
访问loc.getLatitude()时,其引发异常。您可以添加空检查或从其他提供程序获取位置。另外,检查GPS提供商当前是否已禁用。我认为您应该检查loc是否为空
if (loc != null) {
viewlocation = (TextView) findViewById(R.id.location);
viewlocation.setText("My Current location \n Latitude = "+ loc.getLatitude()+" \n Longitude = "+ loc.getLongitude());
}
您正在检查GPS是否作为布尔值启用
isGPS
。将代码移动到块内。当GPS提供程序未通过设置启用时,可能会引发异常。您的代码可能如下所示:
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L,1.0f, this);
boolean isGPS = locationManager.isProviderEnabled (LocationManager.GPS_PROVIDER);
if (isGPS){
// -------- IF GPS IS ENABLED, GET COORDINATES AND DISPLAY TO USER ------
String locationProvider = LocationManager.GPS_PROVIDER;
locationManager.requestLocationUpdates(locationProvider, 400, 1, this);
Location loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (loc != null) // <---- This line can be included to avoid null pointer exception in case you are not able to get the coordinates.
{
viewlocation = (TextView) findViewById(R.id.location);
viewlocation.setText("My Current location \n Latitude = "+ loc.getLatitude()+" \n Longitude = "+ loc.getLongitude());
}
}else{
// --------IF GPS NOT ENABLED, THEN MOVE TO SETTINGS SCREEN TO HELP USER TO ENABLE GPS.
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
}
LocationManager LocationManager=(LocationManager)getSystemService(LOCATION\u服务);
locationManager.RequestLocationUpdate(locationManager.GPS_提供程序,1000L,1.0f,此);
布尔值isGPS=locationManager.isProviderEnabled(locationManager.GPS\U提供程序);
如果(isGPS){
//-----如果启用了GPS,则获取坐标并向用户显示------
字符串locationProvider=LocationManager.GPS\u PROVIDER;
locationManager.RequestLocationUpdate(locationProvider,400,1,this);
Location loc=locationManager.getLastKnownLocation(locationManager.GPS\U提供程序);
if(loc!=null)//签出getLastKnownLocation
可以返回Main.onCreate(Main.java:68)
行中的null值吗?它在onCreate方法的第68行返回NullPointerException。代码的哪一部分是第68行?您可能需要阅读此内容
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L,1.0f, this);
boolean isGPS = locationManager.isProviderEnabled (LocationManager.GPS_PROVIDER);
if (isGPS){
// -------- IF GPS IS ENABLED, GET COORDINATES AND DISPLAY TO USER ------
String locationProvider = LocationManager.GPS_PROVIDER;
locationManager.requestLocationUpdates(locationProvider, 400, 1, this);
Location loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (loc != null) // <---- This line can be included to avoid null pointer exception in case you are not able to get the coordinates.
{
viewlocation = (TextView) findViewById(R.id.location);
viewlocation.setText("My Current location \n Latitude = "+ loc.getLatitude()+" \n Longitude = "+ loc.getLongitude());
}
}else{
// --------IF GPS NOT ENABLED, THEN MOVE TO SETTINGS SCREEN TO HELP USER TO ENABLE GPS.
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
}