java - fragment 未被删除

标签 java android

经过很多天尝试寻找具有双 Pane fragment 和选项卡的解决方案后,我放弃并制作了自己的 ListView ,该 ListView 采用适合平板电脑的超大布局,并且只有 fragment 来管理我的选项卡。我的所有代码都有效,除了一部分,我试图删除选项卡中的旧 fragment 并根据列表中单击的项目创建一个新 fragment 。

这里是生成选项卡 fragment 的位置:

public class AppSectionsPagerAdapter extends FragmentPagerAdapter {
   public AppSectionsPagerAdapter(FragmentManager fm) {
       super(fm);                                 
    }
   //THESE FRAGMENTS ARE GENERATED WITH TABS AT START

 @Override
 public Fragment getItem(int i) {
     switch (i) {     
     case 0:
            return new DescriptionFragment();
     case 1:
      return new ImagesFragment();
     default:
            return new DescriptionFragment();
  }
}

我从 ListView 点击添加 fragment :

public  void addfragment() {   
//THIS FRAGMENT GOES ON TOP AFTER LISTVIEW CLICK
    kick_activity.this.getSupportFragmentManager().popBackStack();
    DescriptionFragment fragment = new DescriptionFragment();
    android.support.v4.app.FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.container, fragment);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    ft.commit();
}

我的描述 fragment fragment :

 public static class DescriptionFragment extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_section_description, container, false);  
        text = ((TextView) rootView.findViewById(R.id.description));         
        text.setText(Html.fromHtml(description_text));
        return rootView;
 }

我知道我做错了什么,只是不知道如何解决。似乎创建了 getItem() 中的 fragment ,当我单击 ListView 并调用 addfragment() 时,由于 fragment 未链接,它会重叠。我可以在“case 0”中放置什么而不是“返回新的 DescriptionFragment”,以便我的所有 fragment 都链接起来并且不会重叠?

注意 - 当我尝试在 getItem() 中使用 ft.repalce 时,应用程序崩溃,并且根据 LogCat,它找不到 R.id.container,因此我不能简单地将该代码移入。

提前感谢您的帮助,我将非常感谢任何解决方案,因为我已经在这个问题上坚持了好几天了。

最佳答案

如果我对每个列表项的理解正确,您想要创建/设置将托管在 FragmentPagerAdapter 中的相应详细信息和图像 fragment ?

如果是这样,当单击列表项时,您可以调用:-

mPager.setAdapter(new MyAdapter(getSupportFragmentManager(), listItemPosition);

当单击列表项时,让 FragmentPagerAdapter 管理 fragment 。

您还需要更改适配器以占据列表项位置并相应地使用。如:-

public static class MyAdapter extends FragmentPagerAdapter {
    private int mPosition;
    public MyAdapter(FragmentManager fm, int position) {
        super(fm);
        mPosition = position;
    }
    ...
}

关于java - fragment 未被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17467454/

相关文章:

java - spring-integration-kafka消费者无法接收消息的问题

java - 能够点击 Java 应用程序

java - 如何有效地嵌套 GridbagLayout 托管 Pane 并使其正确调整大小?

android - 如何在 Windows 中创建新的构建工具 sdk

android - 用 C++ 实现的控制理论

java - 如何在两个 JTable 之间进行更改?

java - JpaRepository 返回一个包含重复对象的列表

android - setNumStars() 在 android 中不起作用

java - 当应用程序被系统杀死时如何删除通知?

java - Android Scanner 读到一个分隔符 (UseLimiter)