TL;DR在 aViewPager
中,我有Fragment
两个子片段,当我在一个子片段中更改列表的背景颜色时,有时也会更改另一个子片段的背景颜色。
所以,我有ViewPager
2 个片段,片段 1 ( FragmentOne
) 有 2 个子片段FragmentOneA
,FragmentOneB
片段 2 是FragmentTwo
.
FragmentOneA
只是一个Fragment
并且FragmentOneB
是一个ListFragment
。
在FragmentOneB
中,我在奇数行和偶数行之间设置颜色。奇数行为黄色,偶数行为白色。
因此,在 中ViewPager
,我首先显示的片段FragmentOne
是FragmentOneA
,然后我按下按钮FragmentOneA
将那个片段替换为FragmentOneB
.
这发生过:
1)我按下按钮FragmentOneA
将其替换为FragmentOneB
. 然后我按下后退按钮弹出堆栈。我这样做了几次。
2)有时,背景颜色FragmentOneA
变为黄色。然后我又做了第 1) 次,在某个时候,背景变回了白色。
我只是不明白为什么会这样。
事件 1) 之前的图像,FragmentOneA
白色背景:
FragmentOneB
单击蓝色按钮“Cari penerbangan”后显示的图像:
FragmentOneA
我做了几次事件编号 1) 之后的图像:
该代码Activity
包含ViewPager
:
public class MyActivity extends ActionBarActivity {
private static final int NUM_PAGES = 2;
private ViewPager viewPager;
private PagerAdapter adapter;
private FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentManager = getSupportFragmentManager();
adapter = new PagerAdapter(fragmentManager);
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(adapter);
}
@Override
public void onBackPressed() {
Fragment fragment = (Fragment) getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":"viewPager.getCurrentItem());
if (fragment != null) { // could be null if not instantiated yet
if (fragment.getView() != null) {
// Pop the backstack on the ChildManager if there is any. If
// not, close this activity as normal.
if (!fragment.getChildFragmentManager().popBackStackImmediate()) {
finish();
}
}
}
}
private class PagerAdapter extends FragmentPagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
FragmentOne d = new FragmentOne();
return d;
case 1:
return new FragmentTwo();
}
return null;
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
}
的代码FragmentOne
:
public class FragmentOne extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
FrameLayout root = new FrameLayout(getActivity());
root.setId(R.id.layout_root);
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.layout_root, new FragmentOneA());
transaction.commit();
return root;
}
}
FragmentOneA
点击蓝色按钮时的代码:
FragmentTransaction transaction = getParentFragment().getChildFragmentManager().beginTransaction();
transaction.addToBackStack(null);
transaction.replace(R.id.layout_root, new FragmentOneB());
transaction.commit();
很长的帖子,但我已经多次查看我的代码,所以如果你知道什么,请给我一些答案。非常感谢你..
我的意思是,我只想使用奇偶行颜色,但不知何故会影响我的其他片段。