在不能正常工作的片段中加载另一个片段

问题描述:

我试图在另一个片段中加载片段。但布局不加载。我在第二个片段中放了一个吐司消息,这个消息出现了,但是布局没有改变。这是一个导航视图。所以基本上我不想开始一项新的活动。我总是希望导航视图出现,但我需要很多screes基于按钮单击出现在不能正常工作的片段中加载另一个片段

我试图用lessonfragment替换courseFragment。

在courseFragment的代码是:

final FragmentTransaction ft = getFragmentManager().beginTransaction(); 
      ft.replace(R.id.coursefragment, new lessonFragment(), 
"NewFragmentTag"); 
      ft.commit(); 
      ft.addToBackStack(null); 

费用片段的代码是:

public class lessonFragment extends Fragment { 

ViewGroup rootView; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    //returning our layout file 
    //change R.layout.yourlayoutfilename for each of your fragments 
    rootView = (ViewGroup) inflater 
      .inflate(R.layout.cours, container, false); 
    ButterKnife.bind(this, rootView); 

    Toast.makeText(getActivity(),"You open lesson",Toast.LENGTH_SHORT).show(); 

    return rootView; 
} 


@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    //you can set the title for your toolbar here for different fragments different titles 
    getActivity().setTitle("Lessons"); 
} 

}

CourseFragment XML称为fragmnet_course.xml

LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:tools="http://schemas.android.com/tools" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:background="#04182f" 
android:id="@+id/coursefragment" 
android:orientation="vertical" 
tools:context="com.example.apple.project4.CoursesFragment" /> 
<Space 
    android:layout_width="match_parent" 
    android:layout_height="60dp" /> 
<TextView 
    android:layout_width="260dp" 
    android:layout_height="60dp" 
    android:textColor="@color/white" 
    android:textStyle="bold" 
    android:gravity="center" 
    android:clickable="true" 
    android:id="@+id/lesson0" 
    android:background="@color/one" 
    android:layout_gravity="center" 
    android:textSize="20dp" 
    android:text="Lessons0"> 

<Space 
    android:layout_width="match_parent" 
    android:layout_height="20dp" /> 
<TextView 
    android:layout_width="260dp" 
    android:layout_height="60dp" 
    android:textColor="@color/white" 
    android:textStyle="bold" 
    android:gravity="center" 
    android:id="@+id/lesson2" 
    android:background="@color/one" 
    android:layout_gravity="center" 
    android:textSize="20dp" 
    android:text="Lessons1"/> 
<Space 
    android:layout_width="match_parent" 
    android:layout_height="20dp" /> 
<TextView 
    android:layout_width="260dp" 
    android:layout_height="60dp" 
    android:textColor="@color/white" 
    android:textStyle="bold" 
    android:gravity="center" 
    android:background="@color/one" 
    android:layout_gravity="center" 
    android:textSize="20dp" 
    android:id="@+id/lesson2" 
    android:text="Lessonsq2"/> 
<Space 
    android:layout_width="match_parent" 
    android:layout_height="20dp" /> 
<TextView 
    android:layout_width="260dp" 
    android:layout_height="60dp" 
    android:textColor="@color/white" 
    android:textStyle="bold" 
    android:gravity="center" 
    android:background="@color/one" 
    android:layout_gravity="center" 
    android:textSize="20dp" 
    android:id="@+id/teachertraining" 
    android:text="Training of Teachers"/> 
<Space 
    android:layout_width="match_parent" 
    android:layout_height="20dp" /> 
<TextView 
    android:layout_width="260dp" 
    android:layout_height="60dp" 
    android:textColor="@color/white" 
    android:textStyle="bold" 
    android:gravity="center" 
    android:background="@color/one" 
    android:layout_gravity="center" 
    android:textSize="20dp" 
    android:id="@+id/childrenscourse" 
    android:text="Children's courses"/> 
<FrameLayout 
    android:id="@+id/content_frame1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

我们应该用getChildFragmentManager()更换一个片段中的片段

更换getFragmentManager()getChildFragmentManager()

final FragmentTransaction ft = getChildFragmentManager().beginTransaction(); 
ft.replace(R.id.coursefragment, new lessonFragment(), "NewFragmentTag"); 
ft.commit(); 
ft.addToBackStack(null); 

更换你getFragmentManager()与getChildFragmentManager()。 因为如果你想从一个片段中打开一个子片段,那么你需要使用子片段管理器。