【问题标题】:Can we nested two child fragment inside one parent fragment in view pager?我们可以在视图寻呼机的一个父片段中嵌套两个子片段吗?
【发布时间】:2017-06-27 13:19:30
【问题描述】:

我有一个视图寻呼机,在其中一个选项卡中我有一个包含两个子片段的父片段。

Candidatelist 是具有框架容器的父片段它说没有找到视图。

我用来替换父片段容器中的第一个孩子的代码是(这很好用

Fragment childFragment = new CandidateListFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.replace(R.id.childContainer, childFragment,"listfragment").commit();

这里的 childContainer 现在是父容器的 ID,当我必须在其中再添加一个子容器时,它会显示未找到视图。

 Fragment childFragment = new CandidateStartEvent();
 FragmentTransaction transaction =getChildFragmentManager().beginTransaction();
 transaction.replace(R.id.childContainer, childFragment).commit();

【问题讨论】:

  • 你说,Candidate List 是一个父级,然后你说你在 Candidate List 中替换它。请澄清一下。
  • CandidateList 和 CandidateListFragment 是两个不同的片段,其中 CandidateList 是父片段。@Pavlus

标签: android android-fragments


【解决方案1】:

我已经解决了在我使用 getFragmentManager 的第二个子片段上发出的问题

CandidateStartEvent childFragment = new CandidateStartEvent();
FragmentTransaction transaction =getFragmentManager().beginTransaction();
transaction.replace(R.id.childContainer, childFragment).addToBackStack(null).commit();

【讨论】:

    【解决方案2】:

    您可以在这里在父片段中添加子片段,我使用微调器选择替换片段。 1)reports_main_segment.xml 2) ReportFragment .java(父片段)

    我有两个像

    这样的子片段

    1) LeadsReportFragment 2) OccupancyFragment

    1) 报告_main_segment.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:background="@color/gini_white_color"
                  android:orientation="vertical">
    
        <Spinner
            android:id="@+id/report_spinner"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/_10sdp"
            android:background="@drawable/gray_border_edittext"
            android:dropDownVerticalOffset="80dp"
            android:entries="@array/reports_status"
            android:padding="@dimen/_5sdp"
            android:textColor="@color/gini_gray_color_b7b7b7"/>
    
    
        <LinearLayout
            android:id="@+id/child_fragment_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"></LinearLayout>
    </LinearLayout>
    

    2) ReportFragment.java

    public class ReportFragment extends Fragment {
        private ViewGroup root;
        private Spinner report_spinner;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            root = (ViewGroup) inflater.inflate(R.layout.reports_main_segment,
                    null);
            return root;
        }
    
        @Override
        public void onResume() {
            super.onResume();
            FindViewById();
        }
    
    
        private void FindViewById() {
            report_spinner = (Spinner) root.findViewById(R.id.report_spinner);
            report_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                    String selected = adapterView.getItemAtPosition(i).toString();
                    if (selected.equalsIgnoreCase("Leads")) {
                        setFragment(1);
                    } else if (selected.equalsIgnoreCase("Occupancy")) {
                        setFragment(2);
                    }
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {
                    // ToDo nothing selection
                }
            });
    
        }
    
        public void setFragment(int type) {
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            if (type == 1) {
                LeadsReportFragment fragment = new LeadsReportFragment();
                fragmentTransaction.replace(R.id.child_fragment_view, fragment);
            } else if (type == 2) {
                OccupancyFragment fragment = new OccupancyFragment();
                fragmentTransaction.replace(R.id.child_fragment_view, fragment);
            }
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();
    
        }
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多