无法在 Fragment 中获得支持 FragmentManager - Fragment 中的 ViewPager
Cannot get support FragmentManager inside Fragment - ViewPager inside Fragment
我正在尝试使用 NavigationDrawer 创建 activity,并且在一个 Fragment 中,我想放置 ViewPager。问题是,当我尝试创建新的 SectionPagerAdapter(class 扩展 FragmentPagerAdapter)时,我无法为构造函数获取正确的 FragmentManager。
我想放置ViewPager的地方有navDrawer片段的onCreateView代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.layout_anime, container, false);
final ActionBar actionBar = getActivity().getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//There is problem:
mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
mViewPager = (ViewPager) getActivity().findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(actionBar.newTab()
.setText(mSectionsPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
return rootView;
}
SectionPagerAdapter class:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
android.support.v4.app.Fragment fragment = new DummySectionFragment();
Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return "Section 1".toUpperCase();
case 1:
return "Section 2".toUpperCase();
case 2:
return "Section 3".toUpperCase();
}
return null;
}
}
和 DummySectionFragment:
public static class DummySectionFragment extends android.support.v4.app.Fragment {
public static final String ARG_SECTION_NUMBER = "section+number";
public DummySectionFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.layout_anime, container, false);
ListView listView = (ListView)
//My code here - http request and listView creating
}
}
现在我在调用 getChuldFragmentManager() 时出错,它说 android.app.FragmentManager 不能应用于 android.support。v4.app.FragmentManager
已解决
我在 class
中扩展 android.app.Fragment 而不是 android.support.v4.app.Fragment
删除您的导入 import android.app.FragmentManager;
并添加此
import android.support.v4.app.FragmentManager;
据此
android.support.v4.FragmentManager cannot be applied to android.app.FragmentManager
您正在 SectionsPagerAdapter
class 中使用 android.app.FragmentManager
。将其更改为 android.support.v4.FragmentManager
.
我正在尝试使用 NavigationDrawer 创建 activity,并且在一个 Fragment 中,我想放置 ViewPager。问题是,当我尝试创建新的 SectionPagerAdapter(class 扩展 FragmentPagerAdapter)时,我无法为构造函数获取正确的 FragmentManager。
我想放置ViewPager的地方有navDrawer片段的onCreateView代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.layout_anime, container, false);
final ActionBar actionBar = getActivity().getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//There is problem:
mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
mViewPager = (ViewPager) getActivity().findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(actionBar.newTab()
.setText(mSectionsPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
return rootView;
}
SectionPagerAdapter class:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
android.support.v4.app.Fragment fragment = new DummySectionFragment();
Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return "Section 1".toUpperCase();
case 1:
return "Section 2".toUpperCase();
case 2:
return "Section 3".toUpperCase();
}
return null;
}
}
和 DummySectionFragment:
public static class DummySectionFragment extends android.support.v4.app.Fragment {
public static final String ARG_SECTION_NUMBER = "section+number";
public DummySectionFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.layout_anime, container, false);
ListView listView = (ListView)
//My code here - http request and listView creating
}
}
现在我在调用 getChuldFragmentManager() 时出错,它说 android.app.FragmentManager 不能应用于 android.support。v4.app.FragmentManager
已解决 我在 class
中扩展 android.app.Fragment 而不是 android.support.v4.app.Fragment删除您的导入 import android.app.FragmentManager;
并添加此
import android.support.v4.app.FragmentManager;
据此
android.support.v4.FragmentManager cannot be applied to android.app.FragmentManager
您正在 SectionsPagerAdapter
class 中使用 android.app.FragmentManager
。将其更改为 android.support.v4.FragmentManager
.