【发布时间】:2017-05-12 16:43:19
【问题描述】:
我希望有一个独立于 MainActivity 的类来初始化地图,并有一个用于初始化的静态方法,因此它在整个项目中保持不变,并且任何类都可以使用从类返回的这个 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 的空指针异常而崩溃
}
【问题讨论】:
-
你考虑过使用onSaveInstanceState函数来存储地图状态吗?
-
我想要干净的代码,我的 MainActivity 应该排除所有我只想在 MainActivity 中有对象并在其上调用 getAsync 的东西
-
永远不要使用
new创建活动实例。它将未初始化且无用。 -
@KevinKrumwiede 你能解释一下你的观点吗?
-
Android 框架在创建 Activity 时,会向其中注入
Context并调用其初始化生命周期方法。如果没有所有这些初始化,getSupportFragmentManager之类的方法根本无法工作。
标签: java android google-maps android-fragments google-play-services