public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.frg_map);
googleMap = supportMapFragment.getMap();
googleMap.setMyLocationEnabled(true);
supportMapFragment.getMapAsync(this);
}
public void onMapReady(GoogleMap googleMap) {
googleMap.setMyLocationEnabled(true);
Criteria criteria = new Criteria();
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
String mMapProvider = locationManager.getBestProvider(criteria, true);
if (checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
Location location = locationManager.getLastKnownLocation(mMapProvider);
if (location != null){
onLcatonChanged(location);
}
locationManager.requestLocationUpdates(mMapProvider, 20000, 0, (LocationListener) this);
}
private void onLcatonChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
}}
下面给出的错误
process:com.example.rahul.maptask,pid:21986 java.lang.runtimeException:无法启动活动ComponentInfo{com.example.rahul.maptask/com.example.rahul.maptask.mainactivity}:java.lang.nullpointerException:试图在Android.app.activitythread.performLaunchActivity(ActivityThread.handleLaunchActivity(ActivityThread.2339)的.java:2413)在Android.app.activityThread.Access$800(activityThread.java:155)在Android.app.activityThread.h.h.handleMessage(activityThread.java:1317)在Android.os.handler.dispatchMessage(handler.java:102)在Android.os.handler.dispatchMessage(handler.java:135)在Android.app.activityThread.main(activityThread.java:5343)在
问题是因为地图在开始活动后还没有准备好。您必须从API中使用getMapAsync方法:
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
您的活动应该这样声明:
public class MainActivity extends FragmentActivity
implements OnMapReadyCallback {
...
}
您必须实现回调,它以与在onCreate中相同的方式使用映射:
@Override
public void onMapReady(GoogleMap googleMap) {
googleMap.setMyLocationEnabled(true);
Criteria criteria = new Criteria();
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
String mMapProvider = locationManager.getBestProvider(criteria, true);
if (checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
Location location = locationManager.getLastKnownLocation(mMapProvider);
if (location != null){
onLcatonChanged(location);
}
locationManager.requestLocationUpdates(mMapProvider, 20000, 0, (LocationListener) this);
}
我只有一个窗口,在那里你推菜单->首选项并启动一个意图 它自动地表示必须关闭应用程序。 未捕获的处理程序:由于未捕获的异常导致线程主退出 java.lang.runtimeException:无法启动活动ComponentInfo{com.example.app/com.example.app.PreferenciasGenerales}: java.lang.ClassCastException
logcat:
我尝试在1个应用程序中构建扫描仪和生成器。当我按下发电机按钮时,它突然崩溃了。我的日志中没有任何错误或警告。 这是我的生成器代码: 主活动代码: 有人知道怎么解决这个问题吗?请帮帮我。 更新 以下是我的生成器xml代码: 我希望这将有助于我的问题:( 更新:这是由我愚蠢的打字错误修正;)。非常感谢迄今为止所有回答我问题的人。我说不出我有多感激。特别是对于那个我已经投票支持正确答案的家伙。你真是个英
我做了一个SAX解析器,它接受输入流作为文件进行解析。如果我使用本地文件,它可以工作,但如果我试图从internet获取它,当它打开输入流时就会崩溃。 这里有代码: 我已经尝试了几种方法,我在其他问题中看到过,它总是在或类似的地方崩溃。 提前道谢。
所以我目前正在努力开发一个应用程序,需要一个谷歌地图API。每当我尝试加载地图时,我的应用程序将我的地图实现为片段类的子类: 编辑:原来我只是错过了应该被引用的API键。我很抱歉提出了一个低质量的问题