1

私のアプリケーションでは、最初の Fragment に ListView を配置し、項目をクリックしたときに新しい 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;




        }
    }
}
4

2 に答える 2

0

ページャーを使用し、各フラグメントに整数インデックスを付けてから、itemclick で次のコードを使用します

ViewPager pager;
pager.setCurrentItem(index, true);
于 2013-07-31T13:15:41.903 に答える
0

トランザクションを使用してフラグメントを置き換える必要があります

ここを参照してください:

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

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();
于 2013-07-31T13:32:42.527 に答える