0

フラグメントの考え方全体について少し混乱しています。アプリのようなでViewPagerを作成する方法についてのチュートリアルに従いました。FragmentsGoogle Play

私はこのようなTabFragmentクラスを持っています:

public class SwipeyTabFragment extends SherlockFragment {

    @Override
    public void onCreate(Bundle b) {
        super.onCreate(b);
        Log.e("FRAGMENT: ", "Hello World!"); 
    }

    public static Fragment newInstance(String title) {
        SwipeyTabFragment f = new SwipeyTabFragment();
        Bundle args = new Bundle();
        args.putString("title", title);
        f.setArguments(args);
        return f;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_swipeytab, null);
        final String title = getArguments().getString("title");
        ((TextView) root.findViewById(R.id.text)).setText(title);
        return root;
    }
}

onCreateViewこのメソッドは、レイアウトや、などのコントロールを初期化するButtonことを知っていListViewます。

私にFragmentAdapter

private class SwipeyTabsPagerAdapter extends FragmentPagerAdapter implements SwipeyTabsAdapter {

        private final Context mContext;

        public SwipeyTabsPagerAdapter(Context context, FragmentManager fm) {
            super(fm);
            this.mContext = context;
        }

        @Override
        public Fragment getItem(int position) {
            return SwipeyTabFragment.newInstance(TITLES[position]);
        }

        @Override
        public int getCount() {
            return TITLES.length;
        }

        public TextView getTab(final int position, SwipeyTabs root) {
            TextView view = (TextView) LayoutInflater.from(mContext).inflate(R.layout.swipey_tab_indicator, root, false);
            view.setText(TITLES[position]);
            view.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    mViewPager.setCurrentItem(position);
                }
            });
            return view;
        }

    }

これにより、String-Arrayに基づいて新しいタブが作成され、のテキストとヘッダーが設定されますFragment

だから、これは私が混乱するところです。たとえば、レイアウトが異なり、ユーザーがを押したときの操作方法が異なるいくつかのフラグメントが必要だとしButtonますPicture。どうすればいいですか?

ありがとう。

4

1 に答える 1

1

すべての「ユーザーがボタンを押す」ものはフラグメントで処理され、Activity必要に応じてコースにコールバックできます (こちらを参照)。レイアウトやロジックごとに異なるフラグメント クラスを作成する必要があります。などで ViewPager に戻しますgetItem。FirstPageFragment と SecondPageFragment を用意し、(インデックスに応じて) でそれらを返すことができますgetView。もちろん、これは、それらのフラグメントが異なる機能を持っている場合にのみ意味があります。私が言いたいことが明確であることを願っています;)

編集:あなたのコメントについて:

あなたが何をしたいのか正確にはわかりませんが、SwipeyTabFragment独自のファイルに既に定義されています。次に、これを変更し、別のレイアウトやその他の機能を追加して、OtherFragment などと呼びます。アプリに 2 つの異なる「ページ」が必要だとしましょうgetCount()。アダプターのメソッドが の「ページ」の量を定義するViewPagerので、2 つを返すようにしましょう。getItem()メソッドでは、is if position0 を返してSwipeyFragmentelse( positionis 1) を返して new を返しますOtherFragment。これで、ViewPagerまったく異なる目的に使用できる 2 つの異なるフラグメントを持つ ができました。

于 2013-03-07T09:49:07.697 に答える