gpt4 book ai didi

java - GoogleMap Fragment 返回 null 对象

转载 作者:行者123 更新时间:2023-12-01 20:25:14 24 4
gpt4 key购买 nike

我想从 MainActivity 中创建一个单独的类来初始化 map ,并使用静态方法进行初始化,以便它在整个项目中保持相同,并且任何类都可以使用从类返回的这个 googlemap 对象,我编写了一个单独的类

public class MapFragment extends AppCompatActivity{

public static SupportMapFragment mapFrag;

public static SupportMapFragment GetMapObj() {
mapFrag = (SupportMapFragment) new MainActivity().
getSupportFragmentManager().findFragmentById(R.id.frag_map);
}

并在 MainActivity 中像这样使用它

SupportMapFragment mapFragment = MapFragment.GetMapObj();
mapFragment.getMapAsync(this);

我有 2 个 xml,其中 1 个用于上面的类,1 个用于 mainActivity 我不知道我应该把我的放在哪里

 <fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/frag_map"
android:name="com.google.android.gms.maps.SupportMapFragment"
tools:context="com.example.sarahn.clientapimap.MainActivity"
/>

话虽如此,我的应用程序因尝试在空对象引用上调用 getAsncMap 的空指针异常而崩溃

}

最佳答案

由于 mapFragment 未正确初始化,您将收到 NullPointerException

改为在 MainActivity 中初始化 SupportMapFragment

main_activity_xml中:

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

现在在您的MainActivity

 public class MainActivity extends FragmentActivity implements OnMapReadyCallback{


SupportMapFragment smp;
GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity_xml);
smp = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
smp.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap map) {
mMap = map;
//map initialized
}
}

关于java - GoogleMap Fragment 返回 null 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942711/

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