标签: supportmapfragment

Android kotlin.TypeCastException:null 不能转换为非 null 类型 com.google.android.gms.maps.SupportMapFragment

我正在尝试在 Kotlin 中编写我当前的应用程序,但我得到 null 无法转换为非 null 类型。我尝试了很多不同的东西,但我一直遇到同样的问题。不知道该怎么办。任何帮助,将不胜感激!

代码:

class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

private lateinit var mMap: GoogleMap
private lateinit var button: Button

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_maps)

    val mapFragment = supportFragmentManager
            .findFragmentById(R.id.mapFragment) as SupportMapFragment
    mapFragment.getMapAsync(this)
}

override fun onMapReady(googleMap: GoogleMap) {
    mMap = googleMap;
    setUpMap();
}

fun setUpMap() {

    val et = findViewById<EditText>(R.id.editText);
    val et2 = findViewById<EditText>(R.id.editText2);
    val lat = et.getText().toString().toDouble();
    val lng = et2.getText().toString().toDouble();
    //val ll = LatLng(lat, lng)

    button = findViewById(R.id.button) as Button
    button.setOnClickListener …
Run Code Online (Sandbox Code Playgroud)

android google-maps kotlin supportmapfragment

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

MapView,MapFrament和SupportMapFragment之间的差异

我知道差异,因为我正在开发一个应用程序,我将介绍谷歌地图API v2用于编译Android 2.3以上.我应该使用哪个?

android android-mapview mapfragment supportmapfragment

10
推荐指数
1
解决办法
4708
查看次数

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万
查看次数

MapFragment在getMapAsync(this)方法中导致NullPointerException

我已经实现了一个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

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

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
查看次数

Android找不到符号方法getMap()

我有一个gps应用程序在我的手机上正常工作.但是,我看到有人在制作中有空指针异常.

    SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);

    // Getting GoogleMap object from the fragment
    googleMap = fm.getMap();

    // Enabling MyLocation Layer of Google Map
    googleMap.setMyLocationEnabled(true);

    googleMap.setPadding(0, 0, 0, 90);
Run Code Online (Sandbox Code Playgroud)

我从生产中得到的错误是由:

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.GoogleMap.setMyLocationEnabled(boolean)' on a null object reference
Run Code Online (Sandbox Code Playgroud)

所以我做了一些研究,发现getMap方法已被删除,人们推荐使用 getMapAsync(this);

@Override
public void onMapReady(GoogleMap googleMap) {
    this.googleMap = googleMap;    //which doesn't seem to work
}
Run Code Online (Sandbox Code Playgroud)

但是,我googleMap在许多不同的方法中引用变量,我无法将所有代码移动到onMapReady方法.我尝试this.googleMap = googleMaponMapReady方法内部使用,但每当我尝试引用googleMap变量时,我仍然会得到空指针异常.我在onCreated()中定义了getMapAsync(this),然后尝试访问onResume()中的'googleMap'对象并获取空指针异常.有没有办法来解决这个问题?谢谢.

java android google-maps supportmapfragment

8
推荐指数
2
解决办法
3万
查看次数

mapFragment.getMap()返回null

我正在尝试从SupportMapFragment获取地图,但它返回null.从我读到的这可能是因为片段尚未完全显示,因此没有地图存在?!我尝试使用executePendingTransactions()修复它,但到目前为止没有成功.

任何想法如何解决它?

这是代码

private GoogleMap map;
private SupportMapFragment mapFragment;
@Override
public void onCreate( Bundle savedInstanceState ) {

    //...
    super.onCreate( savedInstanceState ); 
    setContentView( R.layout.screen_mission2 );
    GoogleMapOptions mapOptions = new GoogleMapOptions();

    mapOptions.mapType(GoogleMap.MAP_TYPE_NORMAL)
        .compassEnabled(true)
        .rotateGesturesEnabled(false)
        .tiltGesturesEnabled(false);

    android.support.v4.app.FragmentManager myFragmentManager = getSupportFragmentManager();
    android.support.v4.app.FragmentManager.enableDebugLogging(true);
    mapFragment = SupportMapFragment.newInstance(mapOptions);
    FragmentTransaction fragmentTransaction = myFragmentManager.beginTransaction();
    fragmentTransaction.add(R.id.mapFragment, mapFragment);
    fragmentTransaction.commit();
    myFragmentManager.executePendingTransactions();

    if(mapFragment == null) Base.log("mapFragment==null");
    if(map==null){
        map = mapFragment.getMap();
        Base.log("map should have been initialized");
        if(map==null) Base.log("map still null");
    }
}
Run Code Online (Sandbox Code Playgroud)

和布局文件:

<fragment
    android:id="@+id/mapFragment"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)

它返回以下日志

V/FragmentManager(24224): add: SupportMapFragment{4078c4b8 id=0x7f06003d} …
Run Code Online (Sandbox Code Playgroud)

android google-maps-api-2 google-play-services supportmapfragment

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

失败保存状态:活动SupportMapFragment {}已清除索引:-1

我正在使用supportMapFragment里面的片段这就是为什么我使用this.getChildFragmentManager()如果这个错误请指导我

public static ClinicFragment newInstance() {
        ClinicFragment fragment = new ClinicFragment();
        return fragment;
    }
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        setTargetFragment(null , -1); // one of my tries 
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_maps, null, false);

        Log.i(TAG , "onCreateView");

        mapFragment = (SupportMapFragment) this.getChildFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        mapUtils = new MapUtils(getActivity());
        .......
        return view;
    }


 @Override
    public void onMapReady(com.google.android.gms.maps.GoogleMap googleMap) {
        mMap = googleMap;
        mMap.setMyLocationEnabled(true);
        mMap.getUiSettings().setZoomControlsEnabled(true);
        mMap.setOnMarkerClickListener(this);
    }

@Override …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments supportmapfragment

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

二进制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万
查看次数