如何在OnItemClickListener()上移动到新片段

时间:2013-07-31 13:00:38

标签: android android-listview android-fragments android-listfragment

在我的应用程序中,我想在第一个片段中放置一个ListView,当我点击一个项目以便每个项目都有自己的详细信息时,我想移动到一个新的片段 在我的代码中。

我实现了它以转移到另一个Activity,但现在我的经理说它必须转到另一个Fragment而不是其他活动。我是片段世界的新手,我不知道该怎么做。经理说我可以使用列表片段,但我没有找到任何有用的代码。

这是我的代码:

public class MainActivity extends FragmentActivity {

    SectionsPagerAdapter mSectionsPagerAdapter;
    static ProgressDialog pd ;
    ViewPager mViewPager;
    List<Fragment> fragments ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Create the adapter that will return a fragment for each of the three
        // primary sections of the app.
        fragments = new Vector<Fragment>();

        fragments.add(Fragment.instantiate(this, FragmentOne.class.getName()));
        fragments.add(Fragment.instantiate(this, FragmentTwo.class.getName()));
        fragments.add(Fragment.instantiate(this, FragmentThree.class.getName()));
        fragments.add(Fragment.instantiate(this, FragmentFour.class.getName()));
        fragments.add(Fragment.instantiate(this, FragmentFive.class.getName()));
        fragments.add(Fragment.instantiate(this, FragmentSix.class.getName()));

        mSectionsPagerAdapter=new SectionsPagerAdapter(super.getSupportFragmentManager());

        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        pd = new ProgressDialog(this);

        mViewPager.setAdapter(mSectionsPagerAdapter);

        //


    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {

            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            int _pos = position % 6;
            return fragments.get(_pos);

        }

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

        @Override
        public CharSequence getPageTitle(int position) {
            final String title_section4="Section4";
            final String title_section5="Section5";
            final String title_section6="Section6";
            final String title_section1="Section1";
            final String title_section2="Section2";
            final String title_section3="Section3";

            Locale l = Locale.getDefault();
            switch (position) {


                case 0:
                    return title_section1.toUpperCase(l);

                case 1:
                    return title_section2.toUpperCase(l);

                case 2:
                    return title_section3.toUpperCase(l);

                case 3:
                    return title_section4.toUpperCase(l);
                case 4:
                    return title_section5.toUpperCase(l);
                case 5:
                    return title_section6.toUpperCase(l);

            }
            return null;
        }
    }


    public static class FragmentOne extends Fragment {

        ArrayList< String > ar;
        ArrayAdapter< String > ad ;
        ListView lv ;
        TextView tv;


        public FragmentOne() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.one, container, false);
            tv = (TextView) rootView.findViewById(R.id.mywidget);

            tv.setSelected(true);
            ar = new ArrayList<String>();
            lv = (ListView) rootView.findViewById(R.id.listView1);
            for (int i = 0 ; i< 10  ; i++){

                ar.add("My Item " + String.valueOf(i));

            }
            ad = new ArrayAdapter<String>
                    (getActivity().getApplicationContext(), android.R.layout.simple_dropdown_item_1line,
                            ar);

            lv.setAdapter(ad);
            lv.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    Toast t = Toast.makeText(getActivity(), "Message",
                            Toast.LENGTH_SHORT);
                    t.show();

                    Intent i = new Intent(getActivity(), tst.class);


                    startActivity(i);

                }
            });


            return rootView;
        }
    }


    public static class FragmentTwo extends Fragment {


        public FragmentTwo() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.two, container, false);

            return rootView;
        }
    }


    public static class FragmentThree extends Fragment {

        public FragmentThree() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.three, container, false);

            return rootView;
        }
    }



    public static class FragmentFour extends Fragment {


        public FragmentFour() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.four, container, false);
            return rootView;
        }
    }



    public static class FragmentFive extends Fragment {


        public FragmentFive() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.five, container, false);
            return rootView;
        }
    }


    public static class FragmentSix extends Fragment {



        public FragmentSix() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.six, container, false);
            return rootView;




        }
    }
}

2 个答案:

答案 0 :(得分:0)

使用寻呼机并为每个片段提供整数索引,然后在itemclick

中使用以下代码
ViewPager pager;
pager.setCurrentItem(index, true);

答案 1 :(得分:0)

您必须使用事务

替换片段

见这里:

http://developer.android.com/guide/components/fragments.html#Example

检查TitlesFragment类的showDetails(int index)方法:

 FragmentTransaction ft = getFragmentManager().beginTransaction();
if (index == 0) {
ft.replace(R.id.details, details);
} else {
ft.replace(R.id.a_item, details);
}
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();