1

フラグメント内からアクティビティを読み込もうとしています。基本のAndroidサンプルコードを使用し、いくつかの異なるレイアウトを追加しました。以下のコードは部分的に機能しますが、インテント/アクティビティは4ページだけでなく3ページにスワイプすると開始します。3ページから2ページにスワイプすると1回も開始したと思います。これはAndroidの要望と関係があると思います。スワイプをシームレスにするために、ページ上のすべてをプリロードします。

あるフラグメントページから別のフラグメントページにスワイプするときにアクティビティをロードする方法はありますか?または、実際に適切なページにスワイプした後にのみアクティビティを起動するための回り道はありますか?望ましくない動作以外のエラーは発生していません。

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

    public DummySectionFragment() {
    }

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


        if (getArguments().getInt(ARG_SECTION_NUMBER)==2){
            LayoutInflater inflater2 = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View mDialogView = inflater2.inflate(R.layout.activity_main2, null);
            return mDialogView;
        } else if (getArguments().getInt(ARG_SECTION_NUMBER)==3){
            LayoutInflater inflater2 = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View mDialogView = inflater2.inflate(R.layout.activity_main3, null);
            return mDialogView;
        } else if (getArguments().getInt(ARG_SECTION_NUMBER)==4){
             LayoutInflater inflater2 = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             View mIntentView = inflater2.inflate(R.layout.page_four_layout, null);
             Intent intent = new Intent(getActivity().getApplication(), PageFourActivity.class);
             startActivity(intent);
             return mIntentView;
        } else {

            // Create a new TextView and set its text to the fragment's section
            // number argument value.
            TextView textView = new TextView(getActivity());
            textView.setGravity(Gravity.CENTER);
            textView.setText(Integer.toString(getArguments().getInt(
                ARG_SECTION_NUMBER)));
            return textView;
        }


    }
4

1 に答える 1

1

ViewPagerwithを使用している場合は、 ViewPager.SimpleOnPageChangeListenerFragmentが役立つと思います。onPageSelected関数を見てください。ご想像のとおり、ViewPagerを使用する場合、Androidは通常どちらかの側にページをロードします。この数は、 setOffscreenPageLimit()を使用して設定できます。テストされていない0などに設定してみてください。

于 2013-03-27T06:03:20.333 に答える