2012-06-09 14 views
5

変数を1つの変数に格納できるようになりました。その変数をフラグメントに渡したいと思います。Androidのインテントを使用して、アクティビティ間でデータをフラグメントに渡す方法

次のコードでフラグメントをロードできます。

public class AndroidListFragmentActivity extends Activity { 
Fragment2 f2; 
public static String itemname; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.apetiserfragement); 
    itemname=getIntent().getStringExtra("itemname"); 
    Bundle args=new Bundle(); 
    args.putString("itemname", itemname); 
    f2=new Fragment2(); 
    f2.setArguments(args); 

} 
} 

は(ここでは、XMLページを使用してフラグメントをロード)

をITEMNAME出力は2つの窓(リストビューのための)listfragmentため延ばすための1つに分割されます。私はFragment2.classを渡したいitemnameは、このクラスの断片

Fragment2.xml

public class Fragment2 extends Fragment { 
String itemname; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

    System.out.println(getArguments().getString("itemname")); 

    return inflater.inflate(R.layout.fragment2, container, false); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

} 

    } 

AndroidListFragmentActivityの一つ。

+0

あなたの問題は何ですか?コードを実行するとどうなるか説明してください。間違いはありますか?もしそうなら、logcatを投稿しますか?あなたの行動がどのように違うのでしょうか? –

+0

また、XMLレイアウトを投稿してください。 –

答えて

5

fragment constructorsの一方に設けられバンドルを使用して、あなたがしたい場所onCreateView()

例で右を行うことによってBundleを取得することができるはずです。そして、

YourFragment.instantiate(context,"fragName",yourBundleWithValue); 

、中あなたの断片:

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

    getArguments().getStringValue("name"); //Returns your string value 

    return inflater.inflate(R.layout.fragment2, container, false); 
} 
+1

私にはサンプルコードを教えてください – naveen

+0

完了してください。このメソッドを使用するか、独自の静的コンストラクタを提供することによってフラグメントをインスタンス化する必要があります(後者はタブーです)。 – hwrdprkns

+0

私はこのクラスにitemnameの値を格納しました。AndroidListFragmentActivity .please mycodeを参照してください。私のコードに従ってコードを変更してください。fragments.pleaseのほうが、YourFragment.instantiate(context、 "fragName"、yourBundleWithValue); 私のコードに従って行を変更してください。 – naveen

-1

あなたを表示するにはFragmentManagerを使用する必要がありますr Fragment

+1

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 – infused

+0

@infusedこれはXYの問題です。 OPは 'setArguments()'と 'getArguments()'をすでに使用しているので、表示されているフラグメントが表示されていない理由は、 'FragmentManager'を使って表示していないからです。 –

+0

@infusedそして、私はこの質問が2歳であることに気付きました... –

関連する問題