我正在使用Google地图制作Android应用程序。我在显示包含地图的片段时遇到了问题。第一个时间我也不例外,但如果我回到地图上,我就有了这个例外:
android.view.InflateException
:二进制XML文件行#28:错误扩充类片段由
java.lang.IllegalArgumentException
引起:二进制XML文件行#28:重复标识0x7f0d0090
,标记为null或父标识0xffffffff
,其中包含{{{{ 1}}。
The stacktrace you can find on Pastebin.
这是我片段上的代码
com.google.android.gms.maps.SupportMapFragment
在这里您可以找到xml文件public class RoeteFragment extends Fragment implements OnMapReadyCallback {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// exception thrown on line below
return inflater.inflate(R.layout.fragment_roete, container, false);
}
@Override
public void onMapReady(GoogleMap googleMap) {
// not so important code for the question.
}
public static Fragment newInstance() {
return new RoeteFragment();
}
}
:
fragment_roete
以下是我用<?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">
<fragment class="com.google.android.gms.maps.SupportMapFragment"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/map"/>
</RelativeLayout>
替换旧片段的方法:
RoeteFragment
请注意以上代码: _fragmentReplaceListener.newFragment(RoeteFragment.newInstance(_roete));
是_fragmentReplaceListener
上的一个接口声明,包含以下代码:
MainActivity
请注意以上代码: @Override
public void newFragment(Fragment fragment) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.frmlytContentMain, fragment);
transaction.addToBackStack("transaction_fromOldFragment_toNewFragment");
transaction.commit();
}
是frmlytContentMain
。
答案 0 :(得分:0)
使用MapFragment而不是SupportMapFragment
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.MapFragment"
android:layout_height="match_parent"
android:layout_width="match_parent"
/>