当前位置: 首页 > 知识库问答 >
问题:

inflating类片段时出错:与另一个片段重复id、标记null或父id

佴淮晨
2023-03-14
public class ShowPlaceActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_place);
        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container_showplaces, new PlaceholderFragment())
                    .commit();
        }
        getActionBar().setSubtitle(getString(R.string.activity_showplaces_subtitle));
    }

}
<FrameLayout

    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container_showplaces"
    android:layout_width="match_parent" android:layout_height="match_parent"
    tools:context="com.krupal.rememberthisplace.ShowPlaceActivity" tools:ignore="MergeRootFrame" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="vertical"

    >


    <ListView
        android:id="@+id/listView_places"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
      />


</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

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

</RelativeLayout>

我想在ListView的项目Click上显示地图...因此,我实现了如下两个片段:

在PlaceHolderFragment.java中,我将OnItemClickListener设置为:

@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_show_place, container, false);



            final MySqliteHelper db = new MySqliteHelper(getActivity().getBaseContext());


            listview_places = (ListView)rootView.findViewById(R.id.listView_places);

            final PlacesAdapter places_adapter = new PlacesAdapter(getActivity(),R.layout.listview_item_row,places);


            listview_places.setAdapter(places_adapter);


            listview_places.setLongClickable(true);

            listview_places.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position,long id) {
                    Place place = places_adapter.getItem(position);
                    String dbvaluename = place.getname();

                  Place selectedplace =  db.getPlace(dbvaluename);


                    dblatitude = selectedplace.getlatitude();

                    dblongitude = selectedplace.getlongitude();


                    dbplacename = place.getname();

                   maps = new MapsFragment();
                    Bundle bundle = new Bundle();
                    bundle.putDouble("dbplacename",dblatitude);
                    bundle.putDouble("dbplacename",dblongitude);
                    bundle.putString("dbplacename",dbplacename);
                   maps.setArguments(bundle);
                    FragmentManager fm = getFragmentManager();

                    FragmentTransaction ft = fm.beginTransaction();

                    ft.replace(R.id.container_showplaces,maps);

                    ft.addToBackStack(null);

                    ft.commit();

                }



        });
}
}

在MapsFragment.java中,我将地图显示为:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {


   rootView = inflater.inflate(R.layout.fragment_maps, container, false);


    try {
        // Loading map
        initilizeMap();

    } catch (Exception e) {
        e.printStackTrace();
    }
    return rootView;
}

共有1个答案

彭炳
2023-03-14

我现在解决了!

另一个解决方案是链接答案对我很有效。

https://stackoverflow.com/a/14484640/3960528

@Override
public void onDestroyView() {
    super.onDestroyView();
    MapFragment f = (MapFragment) getFragmentManager()
                                         .findFragmentById(R.id.mymap);
    if (f != null) 
        getFragmentManager().beginTransaction().remove(f).commit();
}
 类似资料:
  • 最后是日志: 我们非常非常感谢所有的帮助。如果还有什么我可以补充的,请告诉我?

  • 这里会有什么问题吗? 这是我的主要类和我的main.xml,以及我使用的一个相关类(您还会在底部找到错误日志) 主类 main.xml

  • 我有一个错误的膨胀到一个布局的片段。我正在使用的IDE是Xamarin,这是一个用编程语言C#开发的android开发工具。 我在这个目录中的类上得到错误 JeugdbewegingApp\JeugdbewegingApp\演示文稿\MainMenu.cs 在下面的代码段中,该错误由片段类名引发。此代码来自NewsFeed。axml布局文件。 我知道命名空间需要以小写形式编写,但您的文件和目录是否

  • 我正在尝试我的手和Android应用程序开发。我目前正在使用Eclipse(我不记得版本,无论最新版本是什么)。我已经跨过了一座桥梁,我似乎无法理解我做错了什么。我正在尝试使用Google Maps V2 API。我浏览了几个文档并尝试了几种技术,所有这些都导致了相同的错误: 我已经连续两天把脸贴在钥匙上,试图弄明白我做错了什么。 我做过的事情: 从一个空白活动开始。 项目- 我试过很多类似问题的

  • 下面是我的布局: 编辑(已解决):最后,我找到了解决方案。应该在JAVA文件mapFragment中添加onDestroyView()方法,如下所示:

  • 我正在写一个android应用程序,其中包括一个谷歌地图片段。当我将地图片段从包含它的活动中排除时,应用程序运行良好。当我包含映射片段时,我会得到下面blockquote中引用的异常。最让人恼火的是,就在几周前,这还没有发生。这个活动运行了几个星期,然后我更新了android studio,现在我得到了这个例外。我已经在google和stackoverflow上搜索了几个解决方案,但没有任何效果。