片段中未定义的 getSupportFragmentManager()
getSupportFragmentManager() undefined in Fragment
我在 "this method undefine in Fragment" 的 getSupportFragmentManager() 上遇到错误,在创建带有滑动选项卡的滑块菜单时,我准备了如下代码..
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 适配器 class 如下所示
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;
}
您确定导入正确吗?
这个:import android.support.v4.app.Fragment;
而不是这个: import android.app.Fragment;
编辑:
请注意,您在 onCreateView "return rootView" 之后的代码将永远不会执行,因为您之前有一个 return。
当您的 activity
扩展 FragmentActivity
或 AppCompatActivity
时,使用 getSupportFragmentManager()
。如果要扩展 Activity
,则需要改用 getFragmentManager()
。
如果您要扩展 FragmentActivity
,请确保您要导入 android.support.v4.app.FragmentActivity
.
另请注意,getSupportFragmentManager()
适用于 android.support.v4.app.Fragment
而不是 android.app.Fragment
。
您还需要 return 您的 rootView
在 onCreateView()
的末尾。
只需替换:
getSupportFragmentManager()
与:
getFragmentManager()
如果您使用 android.support.v4.app.Fragment
它将 return 一个 android.support.v4.app.FragmentManager
(SupportFragmentManager)
如果您使用 android.app.Fragment
它将 return 一个 android.app.FragmentManager
请记住,它在 android.support.v4.app.FragmentActivity
中的处理方式与 Activities.Like 中的不同。你有 getSupportFragmentManager()
和 getFragmentManager()
我在 "this method undefine in Fragment" 的 getSupportFragmentManager() 上遇到错误,在创建带有滑动选项卡的滑块菜单时,我准备了如下代码..
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 适配器 class 如下所示
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;
}
您确定导入正确吗? 这个:import android.support.v4.app.Fragment; 而不是这个: import android.app.Fragment;
编辑: 请注意,您在 onCreateView "return rootView" 之后的代码将永远不会执行,因为您之前有一个 return。
activity
扩展 FragmentActivity
或 AppCompatActivity
时,使用 getSupportFragmentManager()
。如果要扩展 Activity
,则需要改用 getFragmentManager()
。
如果您要扩展 FragmentActivity
,请确保您要导入 android.support.v4.app.FragmentActivity
.
另请注意,getSupportFragmentManager()
适用于 android.support.v4.app.Fragment
而不是 android.app.Fragment
。
您还需要 return 您的 rootView
在 onCreateView()
的末尾。
只需替换:
getSupportFragmentManager()
与:
getFragmentManager()
如果您使用 android.support.v4.app.Fragment
它将 return 一个 android.support.v4.app.FragmentManager
(SupportFragmentManager)
如果您使用 android.app.Fragment
它将 return 一个 android.app.FragmentManager
请记住,它在 android.support.v4.app.FragmentActivity
中的处理方式与 Activities.Like 中的不同。你有 getSupportFragmentManager()
和 getFragmentManager()