【问题标题】:getSupportFragmentManager() undefined in FragmentgetSupportFragmentManager() 在 Fragment 中未定义
【发布时间】:2015-07-24 14:00:07
【问题描述】:

我在 getSupportFragmentManager() 上遇到“此方法在 Fragment 中未定义”的错误,在创建带有滑动选项卡的滑块菜单时,我准备了如下代码..

public class HomeFragment extends Fragment {

    Toolbar toolbar;
    ViewPager viewpager;
    ViewPagerAdapter adapter;
    SlidingTabLayout tabs;
    CharSequence Titles1[] = { "Home", "Help", "Contect" };
    // int Titles[] = { R.drawable.ic_content_copy_black_24dp,
    // R.drawable.ic_refresh_black_24dp, R.drawable.ic_share_black_24dp };
    int NumOfTabs = 3;

    public HomeFragment() {
    }

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

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

        return rootView;

        adapter = new ViewPagerAdapter(getSupportFragmentManager(), Titles1,
            NumOfTabs);

        viewpager = (ViewPager) rootView.findViewById(R.id.pager);
        viewpager.setAdapter(adapter);

        tabs = (SlidingTabLayout) rootView.findViewById(R.id.tabs);
        tabs.setDistributeEvenly(true);
    }

我的 ViewPager 适配器类如下所示

public class ViewPagerAdapter extends FragmentStatePagerAdapter{

    CharSequence Titles1[];
    int Titles[];
    int NumbOfTabs;

    public ViewPagerAdapter(FragmentManager fm, CharSequence mTitles[], int mNumbOfTabs) {
        super(fm);
        this.Titles1 = mTitles;
        this.NumbOfTabs = mNumbOfTabs;
    }

    @Override
    public Fragment getItem(int arg0) {

        if(arg0 == 0){
            Tab1 tab1 = new Tab1();
            return tab1;
        }else if(arg0 == 1){
            Tab2 tab2 = new Tab2();
            return tab2;
        }else{
            Tab3 tab3 = new Tab3();
            return tab3;
        }
    }


    @Override
    public CharSequence getPageTitle(int position) {
        return Titles1[position];
    }

    @Override
    public int getCount() {
        return NumbOfTabs;
    }

【问题讨论】:

  • 检查答案并评论/接受。

标签: android android-fragments android-support-library


【解决方案1】:

只需替换:

getSupportFragmentManager()

与:

getFragmentManager()

如果您使用的是 android.support.v4.app.Fragment,它将返回 android.support.v4.app.FragmentManager (SupportFragmentManager)

如果您使用的是android.app.Fragment,它将返回android.app.FragmentManager


请记住,它处理的方式与 android.support.v4.app.FragmentActivity 中的 Activities.Like 不同。你有getSupportFragmentManager()getFragmentManager()

【讨论】:

    【解决方案2】:

    getSupportFragmentManager() 在您的 activity 扩展 FragmentActivityAppCompatActivity 时使用。如果要扩展 Activity ,则需要改用 getFragmentManager()

    如果您要扩展 FragmentActivity ,请确保您正在导入 android.support.v4.app.FragmentActivity

    还要注意getSupportFragmentManager() 可用于android.support.v4.app.Fragment 而不是android.app.Fragment

    您还需要在onCreateView() 末尾返回您的rootView

    【讨论】:

      【解决方案3】:

      你确定你有正确的导入吗? 这个:import android.support.v4.app.Fragment; 而不是这个:import android.app.Fragment;

      编辑: 请注意,您在 onCreateView 上的“return rootView”之后的代码将永远不会被执行,因为您之前有一个 return。

      【讨论】:

        猜你喜欢
        • 2015-08-21
        • 1970-01-01
        • 2012-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-01
        相关资源
        最近更新 更多