android - 转到下一个 fragment 时如何停止显示空白页

标签 android android-fragments android-viewpager

我所做的是首先创建一个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/

相关文章:

android - 使用 AndroidAnnotations 在 fragment 中注入(inject) View

android - 动态改变ViewpagerIndicator Fragment Content Android

android - ViewPager 用 2 根手指滑动

java - spinner1 无法解析或不是字段

java - SERVER_ERROR : [code] 1675030 [message]: Error performing query

android - 与 Youtube 播放器支持 fragment 作斗争

android - 修复了 ViewPager 内容布局中的 View ,在 CoordinatorLayout 下

Android EditText OnClickListener 问题

android - 当 Android 不扩展 Activity 时覆盖后退按钮

java - 二进制 XML 文件行 #19 : Error inflating class only on Android 3. 2