gpt4 book ai didi

android - 来自 fragment 的 viewpager 返回空白

转载 作者:行者123 更新时间:2023-11-30 00:40:16 25 4
gpt4 key购买 nike

我正在使用 viewpagerTablayout 开发一个 android 应用程序。这是我从父 Activity 打开的 View 寻呼机 fragment

public class HomeFragment extends Fragment{
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
public HomeActivity() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_home, container, false);

mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager());

mViewPager = (ViewPager) rootView.findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);

TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
return rootView;
}
}

这是我的 viewpager 适配器

public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
switch (position){
case 0 : return new Settingsfragment();
case 1 : return new Profilefragment();
case 2 : return new Categoriesfragment();
}
return null;
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "settings";
case 1:
return "profile";
case 2:
return "Category";
}
return null;
}
}

当我用下面的代码打开 fragment 并按回 viewpager 变成空的

public class Profilefragment extends Fragment {
public Profilefragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.profile_layout, container, false);

TextView VE = (TextView) rootView.findViewById(R.id.profile_view_enquiry);
VE.setOnClickListener(new View.OnClickListener(){
public void onClick (View view){
Fragment fragment = null;
fragment = new Enquiryfragment();
replaceFragment(fragment);
}
});

TextView CA = (TextView) rootView.findViewById(R.id.profile_change_address);
CA.setOnClickListener(new View.OnClickListener(){
public void onClick (View view){
Fragment fragment = null;
fragment = new ChangeAddressfragment();
replaceFragment(fragment);
}
});

return rootView;
}
public void replaceFragment(Fragment someFragment) {
android.support.v4.app.FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.containerView, someFragment);
transaction.addToBackStack(null);
transaction.commit();
}}

我该如何解决这个问题。请帮忙。

最佳答案

public class HomeFragment extends Fragment{
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;

public HomeFragment() {}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_home, container, false);

mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());//Changed here

mViewPager = (ViewPager) rootView.findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);

TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
return rootView;
}
}

您应该在 Fragment 中使用 getChildFragmentManager() 而不是 getFragmentManager()

关于android - 来自 fragment 的 viewpager 返回空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42671729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com