儿童片段背景颜色(神奇地)改变了

时间:2013-08-31 03:22:22

标签: android android-fragments android-viewpager

TL; DR ViewPager中,我有一个Fragment有两个子片段,当我在一个子片段中更改列表的背景颜色时,它有时也会更改其他子片段的背景颜色。

所以,我有ViewPager个2个片段,片段1(FragmentOne)有2个子片段,FragmentOneAFragmentOneB,片段2是FragmentTwo

FragmentOneA只是FragmentFragmentOneBListFragment

FragmentOneB中,我在奇数行和偶数行之间设置颜色。奇怪的行是黄色,甚至是行只是白色。

因此,在ViewPager中,我在FragmentOne中首先显示的片段是FragmentOneA,然后我按下FragmentOneA中的按钮,用FragmentOneB替换该片段

发生了这种情况:

1)我按下了FragmentOneA中的按钮,将其替换为FragmentOneB。然后我按下Back按钮弹出堆栈。我做了几次。

2)有时,FragmentOneA中的背景颜色变为黄色。然后我又做了1),在某个时候,背景变回了白色。

我只是不明白为什么会这样。

事件1之前FragmentOneA的图像)白色背景:

FragmentOneA

点击蓝色按钮“Cari penerbangan”后显示的FragmentOneB图片:

FragmentOneB

我做过事件编号1之后的FragmentOneA的图像几次:

FragmentOneA wrong

包含Activity的{​​{1}}代码:

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

很长的帖子,但我已多次查看我的代码,所以如果你知道任何事情,请给我一些答案。非常感谢你......

我的观点是,我只是想使用奇偶行颜色,但不知何故会影响我的其他片段。

0 个答案:

没有答案