2011-12-05 12 views
2

私は現在、アクティビティを開始する前に、Intentsとそれに与えられたエクストラに大いに依存しているアプリを持っています。エクストラは、表示する必要があるコンテンツを提供するWebサービスを呼び出すときに使用されます。置き換えのフラグメントに追加物を与えることはできますか?

私はそのモデルを、スタティックFragment(Playerと呼ぶことができます)に変換しようとしています。画面上に表示され、もう1つはFragment(それをコンテンツと呼ぶことができます)の上に表示され、メインのコンテンツが表示されます。メイン画面でオプションを選択すると、コンテンツFragmentを置き換えることで他のコンテンツが表示されます。

しかし、これらの新しいFragmentsは現在、非常に多くのエキストラを使用しているIntentsです。 Fragmentを新しいものに置き換えるには方法はありますか?それでもまだ追加することはできますか?

もしそうなら、のは、私は次のコードを持っているとしましょう:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     ft.replace(R.id.fragment_holder, new MusicAlbumList(), "albumlist"); 
     ft.commit(); 

私はMusicAlbumListにエキストラを追加する方法は?

これが不可能な場合、重要なデータが欠落して強制終了する前に、現在、新しいフラグメントに追加されているデータを、どのようにして得ることができますか?

答えて

8

を介して設定したい値を渡すか、この

を行うことができます
MusicAlbumList fragment = new MusicAlbumList(); 
Bundle args = new Bundle(); 
args.putString("StringName","Value here"); 
fragment.setArguments(args); 

あなたのものを交換してください。次に断片onStartまたはonCreateにthis.getArguments();を呼び出してバンドルを取り出し、そこからエクストラを取り出します。

2

変更新しいMusicAlbumListのような引数を持つものにデフォルトコンストラクタからMusicAlbumListのコンストラクタ(int型引数1、...)と、あなたは、コンストラクタ

+0

これは私の最初のアイデアでした。推測私はすべてのクラスをフラグメントに書き直す必要があります(現時点ではFragmentActivitiesを使用しています) –

+0

私は上記の方法をかなりうまく使っています – pankajagarwal

+0

申し訳ありませんが、私はこれを旋風にします。 –

関連する問題