在我的Galaxy Tab 2(三星)上启动我的应用程序时,我一直收到此错误.我正在开发的应用程序非常复杂,很难找到此错误源自何处.所以我开始逐个删除我的应用程序,我最终得到了一个mapview应用程序,你可以在这里找到
剥离后我最终得到的应用程序只是没有overlayItem的mapview!所以按照教程直到第1部分第9点.
这是MapView活动:
package com.****.googlemapstutorial;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends MapActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我真的被踩了!
有人建议吗?
The error:
10-28 21:09:22.872: E/System(16840): Uncaught exception thrown by finalizer
10-28 21:09:22.872: E/System(16840): java.lang.IllegalStateException: Binder has been finalized!
10-28 21:09:22.872: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Google API示例项目中提供的地图演示.我正在使用AVD并尝试使用版本8,10和11并获得相同的问题.
我已经生成了自己的调试密钥并添加到项目中.我可以看到应用程序启动时的地图,并可以放大等 - 所以我得到地图图块,很好.是的 - 我在清单文件中设置了正确的权限和库(根据示例).
但是,我无法通过DDMS或Telnet在地图上设置位置.我在LogCat中看到以下错误:MapActivity:无法获取连接工厂客户端
我已经阅读了很多关于这个问题的线索,但它们似乎总是由于API密钥错误而导致的; 我没有,因为我正在检索地图图块.
所以我创建了自己的项目来进一步测试,并在初始化我的地图时执行以下代码:
myLocationOverlay = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(myLocationOverlay);
myLocationOverlay.enableCompass();
myLocationOverlay.enableMyLocation();
Log.i("funkatron: ", "ABOUT TO CALL RUN ON FIRST FIX");
myLocationOverlay.runOnFirstFix(new Runnable() {
public void run() {
String loc = "we have a location, executing AnimateTo().
"+myLocationOverlay.getMyLocation().toString();
Log.i("funkatron:",loc);
mapController.animateTo(myLocationOverlay.getMyLocation());
}
});
Run Code Online (Sandbox Code Playgroud)
我看到我的第一个日志语句,但从来没有第二个,并且"MapActivity:无法获取连接工厂客户端"在此时被写入LogCat.
我已经读过SDK v8模拟器存在问题,所以我尝试了v10和11 - 但仍然没有乐趣.我还没有在实际的设备上试过这个 - 很快就会做到.
任何关于这个问题的帮助将不胜感激 - 这真让我感到困惑;)
干杯
我在整个应用程序中广泛使用Sherlock Action Bar,但是我有一个继承自MapActivity的活动,因此我不能让它继承自SherlockActivity.
有什么方法可以在地图中使用Sherlock Action Bar,这样我就可以自定义它吗?
最好,曼努埃尔.
我已经实现了一个MapFragment在运行时添加的活动.该MapFragmentXML有静态的fragment,我试图让添加在运行时.我还发现Lollipop在运行时添加了地图片段存在一些问题.请检查问题和临时解决方案
我也在下面给出了我的代码,
fragment_map.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.MapsFragment">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="appCreators.bloodfinder.activity.MapsActivity"/>
<include
android:id="@+id/layout"
layout="@layout/template_custom_spinner"/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
MapsFragment.java
器物 onMapReadyCallback
public class MapsFragment extends SupportMapFragment implements OnMapReadyCallback
Run Code Online (Sandbox Code Playgroud)
在onResume回调中
@Override
public void onResume() {
super.onResume();
((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)).getMapAsync(this);
}
Run Code Online (Sandbox Code Playgroud)
这总是给我null,我也尝试过,
((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map)).getMapAsync(this);
Run Code Online (Sandbox Code Playgroud)
这也回归了 NullPointerException
MapsActivity.java
getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer, MapsFragment.newInstance()).commit();
Run Code Online (Sandbox Code Playgroud)
我在onCreateActivity回调方法中添加了这个.
我无法弄清楚为什么我还在这里NullPointerException!
有时我得到 Attempt to invoke interface method 'void com.google.maps.api.android.lib6.e.fl.o()' on a null object reference
帮助将不胜感激!
更新:仍然没有修复我收到以下错误.我查看了日志,但不知道为什么会发生这种情况. …
android nullpointerexception mapactivity android-fragments supportmapfragment
我的代码中有这些行:
// create tab4
intent = new Intent(this, ActWhereAmI.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
tabspecWhereAmI = tabHost
.newTabSpec("tab4")
.setIndicator(Utilities.prepareTabView(this,"where am I"))
.setContent(intent);
tabHost.addTab(tabspecWhereAmI);
public static View prepareTabView(Context context, String text) {
View view = LayoutInflater.from(context).inflate(
R.layout.tab_indicator, null);
TextView tv = (TextView) view.findViewById(R.id.tabIndicatorTextView);
tv.setText(text);
return view;
}
Run Code Online (Sandbox Code Playgroud)
当应用程序运行该行时,tabHost.addTab(tabspecWhereAmI);我只在LogCat中得到以下错误,程序运行没有任何问题:
10-17 13:38:01.164: W/MapActivity(4815): Recycling dispatcher android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher@413c8658
10-17 13:38:01.171: V/MapActivity(4815): Recycling map object.
10-17 13:38:01.335: W/MapActivity(4815): Recycling dispatcher android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher@413c8658
10-17 13:38:01.335: V/MapActivity(4815): Recycling map object.
10-17 13:38:01.554: D/dalvikvm(4815): GC_CONCURRENT freed 776K, 23% free 10286K/13255K, paused 2ms+7ms …Run Code Online (Sandbox Code Playgroud) 我有一个带有listView的活动,其中每个项目在点击时都可以展开,显示一个mapView.如果单击其他项目,则关闭打开的项目.该活动扩展了MapActivity,并且只有一个mapview实例,我将其删除并根据需要添加到项目中,如下所示:
private MapView getMapView() {
if (mMapView == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mMapView = (MapView) inflater.inflate(R.layout.club_map,null);
}
else
{
((ViewGroup) mMapView.getParent()).removeView(mMapView);
}
return mMapView;
}
private void attachMap(View targetView,String siteID) {
if (openInPrgrs) {
return;
}
RelativeLayout relView = (RelativeLayout) targetView.findViewById(R.id.clubDetailsLayout);
LinearLayout mapContainer = (LinearLayout) relView.findViewById(R.id.mapContainer);
UtilFunctions.logIfDebug("MembershipsList","Attaching Map. siteID " + siteID + " childCount = " + mapContainer.getChildCount());
if (mapContainer.getChildCount() > 0 ) {
return;
}
MapView mapView = getMapView();
mapContainer.addView(mapView);
}
Run Code Online (Sandbox Code Playgroud)
它在大多数情况下工作正常,但是当屏幕关闭并重新打开时,或者打开的项目在屏幕上滚动并返回时,mapView会消失.我知道这是因为listView正在回收视图.如果我尝试在getView()中附加地图(如果视图处于打开位置):
public View getView(int …Run Code Online (Sandbox Code Playgroud) 当我的地图活动被调用时,我在onCreate中调用addUserMapPoint.此函数包含两个实例,我尝试使用myOverlay.getMyLocation获取位置信息.在此活动的初始加载时,第一次尝试的结果返回一个空的GeoPoint,并在主UI线程完成位于myOverlay.runOnFirstFix的监听器线程中的第二次尝试(新的Runnable()...在一秒后调用并且确实包含一个包含lat和lon的GeoPoint.这个监听器函数内的调用看起来似乎把点放在地图上,而mapController.animateTo(gp)行确实将地图移动到我的位置.我的应用程序有一个刷新按钮,当clicked再次触发此活动.我需要lat和lon才能从另一个服务获取位置数据.刷新后,第二次通过map活动代码我期待第一次调用myOverlay.getMyLocation()现在将是能够获得GeoPoint,但它仍然是null.
如果我不能通过第一次调用myOverlay.getMyLocation来获取GeoPoint,那么如何从myOverlay.runOnFirstFix(new Runnable()...线程中找到的第二个调用中传递lat和lon值.你会注意到我一直在尝试将lat和lon添加到MyApp,它是辅助bean类,但是即使在刷新之后,此类中的lat和lon也为null.如果我在addUserMapPoint函数中手动设置lat和lon第一次活动访问这些值是保留的.我猜这是因为它是在主UI线程上设置的.
public class MapActivity extends com.google.android.maps.MapActivity {
private MapView mapView = null;
private MapController mapController = null;
private MyLocationOverlay myOverlay = null;
public static MyApp app;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
app = (MyApp) getApplicationContext();
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapController = mapView.getController();
List<Overlay> mapOverlays = mapView.getOverlays();
mapOverlays.clear();
addUserMapPoint(mapView);
if (!app.isLocServOff()) {
//map other points – service call to get items from our service near lat and lon
addOtherMapPoints(mapOverlays);
} else {
Toast.makeText(app.getApplicationContext(),"Current location could …Run Code Online (Sandbox Code Playgroud) android mapactivity mylocationoverlay android-mapview geopoints
我希望监视某人何时移动到地图上的另一个地方,MapActivity但我不知道该怎么做.也许是某种OnMapChange()监听器?
在调查我们的应用程序中的内存问题时,事实证明如果应用程序Activity是MapActivity,它的第一个实例将不会被最终确定.导致其他内存泄漏,例如传递给setContentView的视图.
有没有人注意到之前?
以下是测试代码,显示"MainActivity:1"尚未最终确定,而MainActivity是否继承自Activity.
要进行测试,需要多次更改设备或仿真器方向.
import com.google.android.maps.MapActivity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends MapActivity {
private static final String defaultTag = "MA";
private static final boolean isDebugModeActivate = true;
private static final boolean isClassTagDisplayed = false;
private static final boolean isWebModeActivate = false;
static public void d(Object thiso, String message)
{
String tag = defaultTag + (isClassTagDisplayed == true ? "_" + thiso.getClass().getSimpleName() : "");
message = (isClassTagDisplayed == false ? thiso.getClass().getSimpleName() + " : " : …Run Code Online (Sandbox Code Playgroud) 我正在开发一个跟踪应用程序,因此我使用GPS数据在画布中绘制路线+检查点.问题是,我在SurfaceView中开发了zoom/drag + span以及所有"lat-long to cartesian conversion",但是如果我可以使用maps api功能(我自己的话)就可以轻松完成所有这些工作.覆盖).
所以我的问题是,我可以使用没有互联网连接的地图api/MapFragment并利用api功能吗?你们有没有做过这样的事情?
android ×10
mapactivity ×10
google-maps ×3
exception ×2
finalizer ×2
geopoints ×1
listview ×1
mapfragment ×1
memory-leaks ×1