gpt4 book ai didi

android - Fragment 类型 (support.v4.app.Fragment) 的方法 getSupportFragmentManager() 未定义

转载 作者:行者123 更新时间:2023-11-29 21:17:01 25 4
gpt4 key购买 nike

我试图让 map 在 Fragments 中工作,但我得到“方法 getSupportFragmentManager() 对于下面的代码中的 Karta 类型是未定义的。我也尝试过使用 getFragmentManager 而不是 getSupportFragmentManager,但后来我得到“无法从 Fragment 转换到 MapFragment”。

Karta.Java:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class Karta extends SupportMapFragment{



public static Karta newInstance() {
Karta f = new Karta();
return f;
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.karta, container, false);
System.out.println("OnCreateView");
return v;
}

@Override
public void onViewCreated(View v, Bundle savedInstanceState){
super.onViewCreated(v, savedInstanceState);
System.out.println("onViewCreated1");
final LatLng BUTIKPLATS = new LatLng(57.873873, 11.974995);
System.out.println("onViewCreated2");
GoogleMap karta;
karta = ((MapFragment) getSupportFragmentManager().findFragmentById(R.id.karta)).getMap();

karta.addMarker(new MarkerOptions().position(BUTIKPLATS).title("Vita Fläckens Blommor"));
karta.setMapType(GoogleMap.MAP_TYPE_HYBRID);
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(BUTIKPLATS, 17);
karta.animateCamera(update);

}
}

karta.XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/BGColor"
android:baselineAligned="false"
android:orientation="horizontal" >

<fragment
android:id="@+id/karta"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:name="com.google.android.gms.maps.MapFragment"/>


</RelativeLayout>

最佳答案

要从字面上解决您的问题,请将 MapFragment 替换为 SupportMapFragment,这样您就可以:

karta  = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.karta)).getMap();

但是,你有更大的问题。

您有 Karta 扩展 SupportMapFragment。没事儿。但是,你让它膨胀一个布局,这是不需要的。此外,您让它膨胀的布局包含 MapFragment,而不是 SupportMapFragment,并且 MapFragment 在您的代码中不起作用。

我想如果你:

  • 删除布局
  • 删除onCreateView()
  • 按照我在此答案顶部的建议更改 karta

那我想你会没事的。

关于android - Fragment 类型 (support.v4.app.Fragment) 的方法 getSupportFragmentManager() 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21169886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com