web-dev-qa-db-ja.com

フラグメントトランザクションでバンドルを送信する

これが機能していない私のコードです:

//この方法でバンドルを送信します:

        String topUser = String.valueOf(scores.get(arg2));

        Bundle data = new Bundle();
        data.putString("userprofile", topUser);

        FragmentTransaction t = getActivity().getSupportFragmentManager()
                .beginTransaction();
        SherlockListFragment mFrag = new ProfileFragment();
        mFrag.setArguments(data);
        t.replace(R.id.main_frag, mFrag);
        t.commit();

//この方法で取得:

        Bundle extras = getActivity().getIntent().getExtras();
        userName = extras.getString("userprofile");

基本的に、データは受信されません。私は正しい軌道に乗っていますか、これを行うより良い方法はありますか?

23

FragmentクラスのgetArguments()メソッドを使用する必要があります。だからあなたのFragmentの中に次のようなものを入れてください:

Bundle extras = getArguments();

リファレンス: http://developer.Android.com/reference/Android/app/Fragment.html#getArguments()

30
Tushar