在不能正常工作的片段中加载另一个片段
问题描述:
我试图在另一个片段中加载片段。但布局不加载。我在第二个片段中放了一个吐司消息,这个消息出现了,但是布局没有改变。这是一个导航视图。所以基本上我不想开始一项新的活动。我总是希望导航视图出现,但我需要很多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()。 因为如果你想从一个片段中打开一个子片段,那么你需要使用子片段管理器。