0

Android でタブ付きのスワイプ ビューを使用しようとしています。カスタマイズされたコンテンツを表示するには、タブのフラグメントにいくつかの変数を渡す必要があります。私の問題は、バンドルが常に 0 であるため、何か間違っていると思います。フラグメント コンテナ ページからエクストラを送信します。これは、フラグメントと、タブを含むメイン フラグメント ページのコードです。

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).

        prof = getIntent().getIntExtra("prof", 0);
        id = getIntent().getIntExtra("id", 0);
        bund = new Bundle();
        bund.putInt("prof", prof);
        bund.putInt("id", id);

        switch (position) {
            case 0:
                // Text fragment activity
                FragmentOne fragment = new FragmentOne();
                fragment.setArguments(bund);
                return fragment;
            case 1:
                // Gallery fragment activity
                FragmentTwo fragment2 = new FragmentTwo();
                fragment2.setArguments(bund);
                return fragment2;
            case 2:
                 //Audio fragment
                FragmentThree fragment3 = new FragmentThree();
                fragment3.setArguments(bund);
                return fragment3;
            }

            return null;
    }

フラグメントコードが onCreateView メソッドに配置されている間

Bundle bundle = getArguments();
    if (bundle!=null){ 
    prof = bundle.getInt("prof");
     id = bundle.getInt("id");
    }

フラグメント コンテナに入ってくる引数を読み取ることはできますが、フラグメントでは読み取ることができません。何を忘れたのでしょうか?

4

1 に答える 1

0

SharedPreferenceここの代わりに試すことができBundleます:

FragmentStatePagerAdapter で SharedPreference をインスタンス化します。

SharedPreference mPref = mContext.getSharedPreferences("myPreference",
            Context.MODE_PRIVATE);

ストアprofid宛先mPref:

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).

    prof = getIntent().getIntExtra("prof", 0);
    id = getIntent().getIntExtra("id", 0);
    // store value in mPref
    mPref.putInt("prof", prof);
    mPref.putInt("id", id);

    // commit changes
    mPref.commit();

switch (position) {
    case 0:
        // Text fragment activity
        FragmentOne fragment = new FragmentOne();

        return fragment;
    case 1:
        // Gallery fragment activity
        FragmentTwo fragment2 = new FragmentTwo();

        return fragment2;
    case 2:
         //Audio fragment
        FragmentThree fragment3 = new FragmentThree();

        return fragment3;
    }

    return null;
}

onCreateView()Fragment内の値を取得します。

SharedPreference mPrefFrag = getActivity().getSharedPreferences("myPreference",
        Context.MODE_PRIVATE);    
int prof = mPrefFrag.getInt("prof",0);
int id = mPrefFrag.getInt("id",0);
于 2015-07-15T11:20:32.380 に答える