Viewpager 片段变成空白

Viewpager Fragments turning blank

在片段内使用带有 Viewpager 的 PagerSlidingTabStrip:

有什么想法吗?

编写您的代码,即您用于在内部设置寻呼机适配器的代码

@Override
public void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    pager.setAdapter(adapter);
}

我遇到过这样的问题

试试这个

mPager.setAdapter(new BasePagerAdapter(getChildFragmentManager(), getResources()));

你可能有这个

mPager.setAdapter(new BasePagerAdapter(getFragmentManager(), getResources()));

编辑: 并在您的 BasePagerAdapter 中扩展 FragmentStatePagerAdapter

public class BasePagerAdapter extends FragmentStatePagerAdapter {

getChildFragmentManager() 替换 getFragmentManager() 对我很有帮助。

很抱歉回复旧的 post,但写这篇文章是因为没有针对我的特定问题的 Whosebug 解决方案帮助了我。

如果您将新的架构组件视图模型与主细节共享视图模型一起使用,并且在从细节片段返回后获得空白视图寻呼机,请在主片段的 onViewCreated 方法中执行视图模型初始化,而不是在onCreate(仅在主片段中需要)。

另外,正如其他答案所说,记得在视图寻呼机适配器中使用 childFragmentManager。

像这样:

class SharedViewModel : ViewModel() {
    val selected = MutableLiveData<Item>()

    fun select(item: Item) {
        selected.value = item
    }
}

class MasterFragment : Fragment() {

    private lateinit var itemSelector: Selector

    private lateinit var model: SharedViewModel

    // In the master fragment do the view model initialization in onViewCreated
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        model = activity?.run {
            ViewModelProviders.of(this).get(SharedViewModel::class.java)
        } ?: throw Exception("Invalid Activity")
        model.selected.observe(this, Observer<Item> { item ->
            // Update the UI
        })
    }
}

class DetailFragment : Fragment() {

    private lateinit var model: SharedViewModel
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        model = activity?.run {
            ViewModelProviders.of(this).get(SharedViewModel::class.java)
        } ?: throw Exception("Invalid Activity")
        model.selected.observe(this, Observer<Item> { item ->
            // Update the UI
        })
    }
}