无法为片段中的 Viewpager 调用 getSupportFragmentMangager
Unable to call getSupportFragmentMangager for a Viewpager within a fragment
我正在尝试将一个 ViewPager 放在一个父片段中,它有几个片段作为页面。
我看到有一些与此相关的主题,但尚未找到任何可以解决我遇到的问题的主题。
我试过以下方法:
getFragmentManager
getChildFragmentManager
getActivity().getSupportFragmentManager
(AppCompatActivity(getActivity())).getFragmentManager
虽然 getActivity 确实有效,但我的其他方法变得“无法访问”,我不知道为什么。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
return view;
initViews (view);
Utils.getInstance(getActivity());
CheckItemNull();
myTabLO.addTab(myTabLO.newTab().setText("Tab 1"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 2"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 3"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 4"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 5"));
myTabLO.setTabGravity(TabLayout.GRAVITY_FILL);
myVPAdatper = new MyVPAdapter(getActivity().getSupportFragmentManager(), myTabLO.getTabCount());
myVP.setAdapter(myVPAdatper);
myVP.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(myTabLO));
myTabLO.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
myVP.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
碎片需要提交才能出现。
这是创建Fragment的基本结构
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment myFragment = fragmentManager.findFragmentById(R.id.my_fragment);
if(myFragment == null)
{
myFragment = new MyFragment();
fragmentManager.beginTransaction().add(R.id.my_fragment, myFragment).commit();
}
嗯,我对代码还是个新手,但我认为方法中的关键字应该在代码的末尾而不是开头,因为当编译器读取代码时,它会在读取代码后完成整个过程关键字“return”如果方法有一个。
我认为您对 fragmentManager 的理解也有误。而不是:
getActivity().getSupportFragmentManager()
只用!
getSupportFragmentManager()
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
initViews (view);
Utils.getInstance(getActivity());
CheckItemNull();
myTabLO.addTab(myTabLO.newTab().setText("Tab 1"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 2"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 3"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 4"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 5"));
myTabLO.setTabGravity(TabLayout.GRAVITY_FILL);
myVPAdatper = new MyVPAdapter(getSupportFragmentManager(), myTabLO.getTabCount());
myVP.setAdapter(myVPAdatper);
myVP.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(myTabLO));
myTabLO.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
myVP.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
return view;
});
试一试!
我正在尝试将一个 ViewPager 放在一个父片段中,它有几个片段作为页面。
我看到有一些与此相关的主题,但尚未找到任何可以解决我遇到的问题的主题。
我试过以下方法: getFragmentManager getChildFragmentManager getActivity().getSupportFragmentManager (AppCompatActivity(getActivity())).getFragmentManager
虽然 getActivity 确实有效,但我的其他方法变得“无法访问”,我不知道为什么。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
return view;
initViews (view);
Utils.getInstance(getActivity());
CheckItemNull();
myTabLO.addTab(myTabLO.newTab().setText("Tab 1"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 2"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 3"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 4"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 5"));
myTabLO.setTabGravity(TabLayout.GRAVITY_FILL);
myVPAdatper = new MyVPAdapter(getActivity().getSupportFragmentManager(), myTabLO.getTabCount());
myVP.setAdapter(myVPAdatper);
myVP.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(myTabLO));
myTabLO.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
myVP.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
碎片需要提交才能出现。
这是创建Fragment的基本结构
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment myFragment = fragmentManager.findFragmentById(R.id.my_fragment);
if(myFragment == null)
{
myFragment = new MyFragment();
fragmentManager.beginTransaction().add(R.id.my_fragment, myFragment).commit();
}
嗯,我对代码还是个新手,但我认为方法中的关键字应该在代码的末尾而不是开头,因为当编译器读取代码时,它会在读取代码后完成整个过程关键字“return”如果方法有一个。
我认为您对 fragmentManager 的理解也有误。而不是:
getActivity().getSupportFragmentManager()
只用!
getSupportFragmentManager()
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
initViews (view);
Utils.getInstance(getActivity());
CheckItemNull();
myTabLO.addTab(myTabLO.newTab().setText("Tab 1"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 2"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 3"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 4"));
myTabLO.addTab(myTabLO.newTab().setText("Tab 5"));
myTabLO.setTabGravity(TabLayout.GRAVITY_FILL);
myVPAdatper = new MyVPAdapter(getSupportFragmentManager(), myTabLO.getTabCount());
myVP.setAdapter(myVPAdatper);
myVP.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(myTabLO));
myTabLO.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
myVP.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
return view;
});
试一试!