片段集元素可见性无法正常工作

时间:2016-08-29 12:34:10

标签: android android-fragments

我有一个设置的片段,具体取决于片段应显示的页面或隐藏其中的许多元素:

public static class PlaceholderFragment extends Fragment {
        /**
         * The fragment argument representing the section number for this
         * fragment.
         */
        private static final String ARG_SECTION_NUMBER = "section_number";

        public PlaceholderFragment() {
        }

        /**
         * Returns a new instance of this fragment for the given section
         * number.
         */
        public static PlaceholderFragment newInstance(int sectionNumber) {
            PlaceholderFragment fragment = new PlaceholderFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_install__ubuntu, container, false);
            TextView textView = (TextView) rootView.findViewById(R.id.top_text);
            TextView middleText = (TextView) rootView.findViewById(R.id.middle_text);
            TextView bottomText = (TextView) rootView.findViewById(R.id.bottom_text);

            Button imageDownload = (Button) rootView.findViewById(R.id.btn_DownloadImage);
            Button vnc = (Button) rootView.findViewById(R.id.btn_DownloadVNC);
            Button terminal = (Button) rootView.findViewById(R.id.btn_DownloadTerminal);


            int pageNumber = getArguments().getInt(ARG_SECTION_NUMBER);

            switch (pageNumber) {
                case 0:
                    textView.setVisibility(View.VISIBLE);
                    middleText.setVisibility(View.GONE);
                    bottomText.setVisibility(View.GONE);
                    imageDownload.setVisibility(View.GONE);
                    vnc.setVisibility(View.GONE);
                    terminal.setVisibility(View.GONE);

                case 1:
                    textView.setVisibility(View.VISIBLE);
                    middleText.setVisibility(View.VISIBLE);
                    bottomText.setVisibility(View.VISIBLE);
                    imageDownload.setVisibility(View.VISIBLE);
                    vnc.setVisibility(View.VISIBLE);
                    terminal.setVisibility(View.VISIBLE);

                case 2:
                    textView.setVisibility(View.VISIBLE);
                    middleText.setVisibility(View.GONE);
                    bottomText.setVisibility(View.GONE);
                    imageDownload.setVisibility(View.GONE);
                    vnc.setVisibility(View.GONE);
                    terminal.setVisibility(View.GONE);

                case 3:
                    textView.setVisibility(View.VISIBLE);
                    middleText.setVisibility(View.GONE);
                    bottomText.setVisibility(View.GONE);
                    imageDownload.setVisibility(View.GONE);
                    vnc.setVisibility(View.GONE);
                    terminal.setVisibility(View.GONE);
            }

            return rootView;
        }
    }
public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            // getItem is called to instantiate the fragment for the given page.
            // Return a PlaceholderFragment (defined as a static inner class below).
            return PlaceholderFragment.newInstance(position + 1);
        }

        @Override
        public int getCount() {
            // Show 3 total pages.
            return 4;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            switch (position) {
                case 0:
                    return "1";
                case 1:
                    return "2";
                case 2:
                    return "3";
                case 3:
                    return "4";
            }
            return null;
        }
    }

然而,这似乎没有正常工作,例如使用上面的代码,最后一个片段显示所有元素而不是第二个片段应该是。

根据位置修改片段视图的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您忘记在每个切换案例后添加 break;

            switch (pageNumber) {
                case 0:
                    textView.setVisibility(View.VISIBLE);
                    middleText.setVisibility(View.GONE);
                    bottomText.setVisibility(View.GONE);
                    imageDownload.setVisibility(View.GONE);
                    vnc.setVisibility(View.GONE);
                    terminal.setVisibility(View.GONE);
                    break;


                case 1:
                    textView.setVisibility(View.VISIBLE);
                    middleText.setVisibility(View.VISIBLE);
                    bottomText.setVisibility(View.VISIBLE);
                    imageDownload.setVisibility(View.VISIBLE);
                    vnc.setVisibility(View.VISIBLE);
                    terminal.setVisibility(View.VISIBLE);
                    break;

                case 2:
                    textView.setVisibility(View.VISIBLE);
                    middleText.setVisibility(View.GONE);
                    bottomText.setVisibility(View.GONE);
                    imageDownload.setVisibility(View.GONE);
                    vnc.setVisibility(View.GONE);
                    terminal.setVisibility(View.GONE);
                    break;

                case 3:
                    textView.setVisibility(View.VISIBLE);
                    middleText.setVisibility(View.GONE);
                    bottomText.setVisibility(View.GONE);
                    imageDownload.setVisibility(View.GONE);
                    vnc.setVisibility(View.GONE);
                    terminal.setVisibility(View.GONE);
                    break;
            }