我所做的是首先创建一个tapBar(Activity)。然后在 Activity 下,我有第一、第二和第三个 fragment 。我试图从第一个 fragment 移动到下一个 fragment ,但我得到一个空白页(因为它不是我在 xml 中设置的蓝色)。有什么建议吗?
Activity
public class TabBar extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabbar);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
SimpleFragmentPagerAdapter adapter = new SimpleFragmentPagerAdapter(this, getSupportFragmentManager());
viewPager.setAdapter(adapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
tabLayout.setupWithViewPager(viewPager);
}
}
第一个 fragment
public class First extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.first, null);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment fragment = new Next();
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.hide(First.this);
fragmentTransaction.show(fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
return rootView;
}
下一个 fragment
public class Next extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.next, container, false);
return rootView;
}
}
下一个 fragment XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/avoscloud_blue">
</RelativeLayout>
最佳答案
您应该添加 .add(R.id.
FragmentTransaction add (int containerViewId, Fragment fragment)
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
Next childFrag = new Next ();
getFragmentManager().beginTransaction().add(R.id.frame_child_fragment, childFrag)
.addToBackStack(null)
.commit();
}
});
阅读Nested Fragments
以获得更好的信息。
编辑
您应该设置默认标签
tabLayout.setupWithViewPager(viewPager);
viewPager.setCurrentItem(0); // 0 is FIRST
在R.layout.first
FrameLayout
<FrameLayout
android:id="@+id/frame_child_fragment"
android:layout_height="match_parent"
android:layout_width="match_parent"
/>
关于android - 转到下一个 fragment 时如何停止显示空白页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47726446/