标签: mapfragment

ClassNotFoundException读取在onSaveInstanceState中扩展MapFragment的类中的Serializable对象

我有一个扩展SupportMapFragment的类,我从后端加载一些数据并显示标记.我还有另一个片段,我在地图上显示与所选标记相对应的细节.我正在以纵向模式在地图下方显示细节片段,并在横向中并排显示.

public class MapDisplayFragment extends SupportMapFragment {
private ArrayList<ShowLocation> locations = null;

public void onViewCreated(View view, Bundle savedInstanceState) {
    if (savedInstanceState != null) {
    locations = (ArrayList<ShowLocation>)savedInstanceState.getSerializable("LOCATIONS");
    }
}
@Override
public void onSaveInstanceState(Bundle outState) {
  if (outState == null) {
 outState = new Bundle();
  }
  outState.putSerializable("LOCATIONS", locations);
  super.onSaveInstanceState(outState);
}
Run Code Online (Sandbox Code Playgroud)

我有一个实现Serializable的类,它在派生的map类中使用.我使用onSaveInstanceState来存储对象,这样我就不必再从后端检索数据.但应用程序崩溃与java.lang.RuntimeException:Parcelable遇到ClassClassNotFoundException当我翻转设备时读取Serializable对象.

public class ShowLocation implements Serializable {
    private String geoCodeLat = Constants.EMPTY_STRING;
    private String geoCodeLng = Constants.EMPTY_STRING;
    ....
    public String getGeoCodeLat() {
       return geoCodeLat;
    }
    public void …
Run Code Online (Sandbox Code Playgroud)

android mapfragment supportmapfragment

9
推荐指数
1
解决办法
3618
查看次数

切换片段 - 谷歌地图片段V2 - 活动已被破坏错误

我有一个地图活动(SherlockFragmentActivity)加载在地图片段中,该片段有2个按钮,并在显示2个不同片段之间切换(GoogleMapFragment和ScaleImageViewFragment)

屏幕截图

当我点击Exhibitor Map按钮时它会替换片段,但是当我点击后面我得到一个"java.lang.IllegalStateException:Activity已被销毁"错误

ERROR/AndroidRuntime(5768): FATAL EXCEPTION: main
    java.lang.IllegalStateException: Activity has been destroyed
    at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1342)
    at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
    at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
    at com.takeit2eleven.towniemeeting.android.fragments.GoogleMapFragment.onCreateView(GoogleMapFragment.java:42)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)
    at android.os.Handler.handleCallback(Handler.java:615)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4745)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

这是我的MapsFragment.java文件:

public class MapsFragment extends SherlockFragment {

Button mHotelMapButton;
Button mExhibitorButton;
GoogleMapFragment mGoogleMapFragment;
ScaleImageViewFragment mScaleImageViewFragment;
static boolean mShowingGoogleMap = true;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-activity mapfragment supportmapfragment

9
推荐指数
1
解决办法
1万
查看次数

Android Map API v2未在某些设备上显示Map

我正在开发一个显示地图的Android应用程序.

我正在使用MapFragment来显示我的地图.我获得了一个API密钥,并为我的清单添加了所有必需的权限.

到目前为止一切顺利,在Android 4.1上我的HTC One S上调试应用程序时一切正常,地图显示包括控件和其他所有内容.

当我在运行Android 4.2.2的Galaxy S4上调试相同的应用程序时,地图保持空白,只有控件显示.

互联网连接绝对可用.

  • 为什么会这样?
  • 有关v2 Map API的android 4.1和4.2之间有什么区别吗?
  • 三星和HTC之间在这个问题上有什么区别吗?
  • 某些设备需要新密钥吗?

我在Galaxy S4上收到的"错误消息"是"无法加载地图.无法联系谷歌服务."

这是我的清单:

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="18" />

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="com.mypackage.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>

<permission
    android:name="com.mypackage.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="myobtainedkey" />
Run Code Online (Sandbox Code Playgroud)

再说一遍:我的HTC One S一切正常,我正在寻找地图没有加载到S4的原因?

我已经尝试过的事情:

  • 卸载应用程序并重新安装
  • 更新/重新安装谷歌播放服务
  • 仅使用wifi /仅使用数据连接
  • 重启设备
  • 清理项目

android map google-maps-api-2 mapfragment

8
推荐指数
1
解决办法
3082
查看次数

SupportMapFragment第一次加载速度非常慢,但在后续加载(包括不同的活动)中很快加载

我的应用程序有三个不同的活动使用a SupportMapFragment.启动应用程序后第一次加载会出现重大延迟.即使我返回并访问完全不同的Activity(也包含地图),后续加载时也不会出现这种缓慢的加载时间.我想知道这是否是我能解决的问题.

这个要点显示了我如何加载SupportMapFragment.使用调试点我已经确定缓慢发生在onViewCreated和之间onStart.

更新1:使用Debug我已经采取了第一次加载和第二次加载的两条痕迹.第二个负载是完全不同的Activity.我很快注意到第一个跟踪(慢速加载)有很多调用java/util/zip/zipEntry.在第二个跟踪中我没有看到任何类似的调用.此外,这种延迟现象之间onCreateViewonViewCreated的MapFragment的.

更新2:这也发生在MapFragment(不支持),但延迟实际上要长得多.

更新3:这个SO问题似乎是相关的.也是这一个.

android mapfragment supportmapfragment

8
推荐指数
0
解决办法
1729
查看次数

二进制XML文件行#8:错误膨胀类片段,谷歌地图

在这个应用程序中,我正在尝试添加功能V2谷歌地图.我已经查看了大多数创建活动的教程,获取了地图的密钥,并创建了xml文件,试着看看我是否错过了任何一步(我经历了4次),但它没有好像我错过了任何一步.

是我使用的网站:

当我在手机上运行我的应用程序时(因为Google Play服务无法在模拟器上运行),它会给我这两个错误:

  02-11 22:10:54.690: E/AndroidRuntime(4526): java.lang.RuntimeException: Unable to       start activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.ShowActivity}:       android.view.InflateException: Binary XML file line #8: Error inflating class fragment
  02-11 22:10:54.690: E/AndroidRuntime(4526): 

  Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment       com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public
Run Code Online (Sandbox Code Playgroud)

这是我的活动:

package com.example.myfirstapp;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import com.google.android.maps.*;
import com.google.android.gms.maps.MapFragment;
public class ShowActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
} …
Run Code Online (Sandbox Code Playgroud)

xml android mapfragment

7
推荐指数
1
解决办法
3万
查看次数

Android环绕Google地图标记的脉冲环动画

我想在Android google mapFragment(如Uber)的蓝点当前用户位置添加脉冲环动画.

有人可以帮我这件事吗?

location google-maps mapfragment android-studio

7
推荐指数
2
解决办法
4428
查看次数

多个MapFragments的性能(Android Map API v2)

我搜索了新的Google Android Map API v2的文档,但没有找到任何相关信息.在v2之前,我们(官方)无法正确显示每个应用程序(进程)的多个映射.我认为,随着MapFragment实施,它不再是一个问题.我也知道,Fragments自API 17以来,它可以是自包含的.而且,最后但并非最不重要的是,有兼容性包,这使得将它全部移回至少API 8成为可能(在API 7中,没有OpenGL 2.0所以地图不会起作用).

Sa我拥有将我的应用程序移植到Maps API v2并实现以下场景的所有要素:ViewPagercontains Fragments并且每个都包含一个MapFragment.

但我应该这样做吗?我的意思是,我将面临性能问题,如果我如20 Fragments包含MapFragments在一个ViewPager

如果您在文档或其他地方找到了解决我问题的任何内容,请告诉我.


编辑:示例用法:让我们想象一个屏幕,其中包含有关某些特定项目的信息 - 地点,事件,文章.另外,让我们想象一下,在其他信息中,它必须包含一个完全正常运行的地图.但我希望用户能够根据需要刷到另一个项目.每个项目都有自己的地图.

旁注:我知道我可以在外面实现一个地图ViewPager,只是根据当前显示的项目进行更新,但这不是我想要的 - 它不是以用户为中心的设计.


可能的解决方案(但尚未检查).ViewPager只在它的缓存中保留一些(默认值为3)片段,并在它们即将显示时重新创建它们,因此不会有太多的内存开销,因为只需要少量内存MapFragments.MapFragment我认为,性能问题可能是通货膨胀非常沉重 - 但这可以通过回收再利用来解决MapFragments.


那么,如果我相信它会很好用的话,为什么我不会实现呢?还有一个问题是,如果MapFragments没有应用程序看起来像它已经坏了就无法移动.看到这个.

android google-maps mapfragment

6
推荐指数
1
解决办法
1550
查看次数

"即使我在API级别17,也无法将MapFragment解析为类型"

我刚开始使用MapFragments,我可以在我的Activity中显示Map.我只是使用一个简单的XML布局,它按预期工作:

在此输入图像描述

现在,我需要在代码中获取Fragment,这样我就可以开始与Map进行交互了.这是我遇到问题的地方:

在此输入图像描述

如您所见,MapFragment(或getFragmentManager)无法解析为某种类型.我的目标是Android 4,API级别17:

在此输入图像描述

你也可以看到我正在引用Googke Play库.

为清晰起见,这是清单:

在此输入图像描述

所以,最大的问题是:为什么我无法解决MapFragment?我错过了什么?=)

作为旁注:SupportMapFragment似乎解决好了,但那不是我想要的.

android android-fragments android-mapview mapfragment

6
推荐指数
1
解决办法
1万
查看次数

MapFragment:使用后退按钮后性能不佳

MapFragment与操作栏菜单一起使用时出现性能问题.

当满足三个条件时,错误就会出现

  1. 有一个MapFragment实例化的.
  2. 从选项菜单触发片段事务,用另一个片段替换映射片段.
  3. 点击后退按钮返回地图片段.现在性能明显下降.平移和缩放非常不稳定.

再次打开选项菜单并再次解除它可以解决问题.

这种行为不会出现

  • 从视图按钮而不是从选项菜单触发片段替换.
  • 在中触发片段替换 onCreate()
  • 用选项菜单中的MapFragment替换空白片段
  • popBackStack从选项菜单调用
  • 使用ListFragment而不是MapView

最小的工作示例(需要访问Google Maps API):

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import com.google.android.gms.maps.MapFragment;

public class MapFragmentBugActivity extends Activity {
    Fragment mMapFragment;
    String MAP = "Map";
    String BLANK = "Blank";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fragment_bug);
        mMapFragment = new MapFragment();
        getFragmentManager().beginTransaction()
                .replace(R.id.main, mMapFragment)
                .commit();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(MAP);
        menu.add(BLANK);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem …
Run Code Online (Sandbox Code Playgroud)

android android-fragments mapfragment

6
推荐指数
1
解决办法
1239
查看次数

二进制XML文件行#1:错误膨胀类片段MapFragment

我有一个带有一些碎片的导航抽屉.每个片段在布局中都有一个MapFragment.最初,当应用程序运行导航抽屉时,单击打开片段一次,但是当我单击相同的导航项以第二次打开相同的片段(在访问其他片段之后)后,我得到以下错误onCreateView()

Binary XML file line #1: Error inflating class fragment 
Run Code Online (Sandbox Code Playgroud)

下面是我的片段代码:

user_map_Fragment.xml

 <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:id="@+id/parentContainer"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
        <fragment
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:name="com.google.android.gms.maps.MapFragment"/>

......
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

MainFragment.cs

public class MainFragement : Android.Support.V4.App.Fragment, IOnMapReadyCallback, ILocationListener, Android.Views.View.IOnKeyListener
    {

        private GoogleMap mMap;

        private LocationManager _locationManager;
        private string _locationProvider;
        private Android.Locations.Location _currentLocation;

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            if (v == null)
            {
                v = inflater.Inflate(Resource.Layout.Main, container, false);

                SetUpMap();
                InitializeLocationManager();

            }
            return v;
        }
}



private void SetUpMap()
        {
            if …
Run Code Online (Sandbox Code Playgroud)

android google-maps android-fragments mapfragment supportmapfragment

6
推荐指数
1
解决办法
1万
查看次数