【问题标题】:viewpager from fragment returns blank片段中的 viewpager 返回空白
【发布时间】:2017-03-08 12:44:07
【问题描述】:

我正在使用viewpagerTablayout 开发一个Android 应用程序。这是从父活动打开的视图寻呼机片段

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;
}
}

当我用下面的代码打开一个片段并按回 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();
}}

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

【问题讨论】:

  • 从哪里打开 HomeActivity??
  • 请将所有片段重命名为各自的名称..为所有片段添加活动后缀真的很混乱
  • @DharmbirSingh 我从 mainactivity 打开了 homeactivity

标签: android android-layout android-studio android-fragments android-viewpager


【解决方案1】:
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()

【讨论】:

  • 添加快照你已经取得的成就和你真正想要的
  • 我的主活动有导航抽屉当导航抽屉项选择它在我的视图寻呼机片段中打开了视图寻呼机,我点击了在主活动片段中打开的视图寻呼机片段项 span>
猜你喜欢
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
相关资源
最近更新 更多