ViewPage中替换片段的java问题
我正在尝试替换ViewPager中第二个上的第一个片段。我有一个小问题,因为在替换之后,我仍然首先在背景片段中看到,并且他们首先从片段开始工作listner。我做错了什么?我替换了第一个片段视图,但它不起作用。在另一个项目中,我做了一些类似的事情,效果很好
public class FirstFragment extends BaseFragment {
private RecyclerView pathwaysRecyclerView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_pathways, container, false);
initializeViews(view);
initRecyclerView();
return view;
}
private void initializeViews(View view) {
pathwaysRecyclerView = view.findViewById(R.id.pathways_recyclerview);
}
private void initRecyclerView(){
pathwaysRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 2));
PathwaysAdapter adapter = new PathwaysAdapter(new OnPathwayClickListner(),requireContext());
pathwaysRecyclerView.setAdapter(adapter);
}
private class OnPathwayClickListner implements View.OnClickListener {
@Override
public void onClick(View view) {
navigateToSecondFragment();
}
}
private void navigateToSecondFragment(){
Fragment fragment = new SecondFragment();
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_pathways_view, fragment)
.addToBackStack(null)
.commit();
}
@Override
public void updateView() {
}
}
首先是你。xml
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:app="http://schemas.安卓.com/apk/res-auto"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:id="@+id/fragment_pathways_view">
<LinearLayout
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:background="@color/greyAccent"
安卓:orientation="vertical">
<LinearLayout
安卓:id="@+id/ebpHeader"
安卓:layout_width="match_parent"
安卓:layout_height="wrap_content"
安卓:background="@color/greyAccent"
安卓:orientation="vertical" >
<TextView
安卓:id="@+id/pathways_name_tv"
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="@string/list_of_all_paths"
安卓:layout_margin="15sp"
app:fontFamily="sans-serif-light"
安卓:textSize="25sp"
安卓:textStyle="bold"
/>
<TextView
安卓:layout_width="match_parent"
安卓:layout_height="wrap_content"
安卓:layout_marginTop="@dimen/vertical_margin"
安卓:layout_marginStart="@dimen/vertical_margin"
安卓:layout_marginEnd="@dimen/vertical_margin"
安卓:layout_marginBottom="@dimen/beetwen_content_line_margin"
安卓:textSize="@dimen/textSizeMedium"
安卓:text="@string/list_of_all_paths_description"/>
</LinearLayout>
<LinearLayout
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:orientation="vertical"
安卓:background="@drawable/evaluation_background">
<安卓x.recyclerview.widget.RecyclerView
安卓:id="@+id/pathways_recyclerview"
安卓:layout_marginTop="@dimen/beetwen_content_line_margin"
安卓:layout_marginStart="@dimen/vertical_margin"
安卓:layout_marginEnd="@dimen/vertical_margin"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
第二段
public class SecondFragment extends BaseFragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_path, container, false);
return view;
}
}
碎片秒。xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:app="http://schemas.安卓.com/apk/res-auto"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:background="@color/mainAppBackgroundColor">
<LinearLayout
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:background="@color/mainAppBackgroundColor"
安卓:orientation="vertical">
<TextView
安卓:id="@+id/path_name_tv"
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:layout_margin="15sp"
app:fontFamily="sans-serif-light"
安卓:textSize="25sp"
安卓:textStyle="bold"
/>
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="@string/list_of_skills"
安卓:layout_marginTop="15sp"
安卓:layout_marginStart="15sp"
安卓:layout_marginEnd="15sp"
app:fontFamily="sans-serif-light"
安卓:textSize="18sp"
安卓:textStyle="bold"
/>
<安卓x.recyclerview.widget.RecyclerView
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:layout_marginStart="@dimen/vertical_margin"
安卓:layout_marginTop="5sp"
安卓:layout_marginEnd="@dimen/vertical_margin" />
</LinearLayout>
</RelativeLayout>
浏览页面:
<com.habitcoach.安卓.activity.util.NonSwipeableViewPager
安卓:id="@+id/hsFragmentsContainer"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:layout_alignParentStart="true"
安卓:layout_alignParentTop="true"
安卓:orientation="vertical"
安卓:paddingBottom="50dp"
安卓:layout_alignParentLeft="true" />
页面适配器:
class MainViewViewPageAdapter extends FragmentStatePagerAdapter {
MainViewViewPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getItemPosition(Object object) {
BaseFragment f = (BaseFragment) object;
if (f != null) {
f.updateView();
}
return super.getItemPosition(object);
}
@Override
public Fragment getItem(int position) {
Fragment f = null;
switch (position) {
case 0:
f = new OneFragment();
break;
case 1:
f = new TwoFragment();
break;
case 2:
f = new ThreeeFragment();
break;
case 3:
f = new FourFragment();
break;
}
return f;
}
@Override
public int getCount() {
return 4;
}
}
# 1 楼答案
我修改了你的代码。检查下面的解决方案
主要活动。爪哇
主要活动。xml
MainViewPageAdapter。爪哇
第一个片段。爪哇
第二个片段。爪哇
}
PathwaysAdapter。爪哇
划船。xml