2011-07-11 12 views
4

ポートレートとランドスケープをサポートできるアプリケーションを作りたいと思っています。レイアウトには2つのペインがあり、左側にオプションがあり、右側に結果が表示されます。オプションが選択されると、右側のペインにそのオプションが表示されます。しかし、肖像画のために十分な部屋がないので、別の活動が必要です。各オプションは異なるタイプのフラグメントを生成するので、アクティビティー間で変更されたすべてのフラグメントがそこに追加されている場合には、各オプションごとにアクティビティーを作成する必要はありません。主な活動の断片を新しいものに渡したいのですが、どうすればいいでしょうか?アクティビティ間でフラグメントを渡す

答えて

4

メインアクティビティのフラグメントを新しいアクティビティに渡したいのですが、どうすればいいですか?

あなたはそうではありません。ほとんどの場合、あなたは@ Riboseの答えに従うでしょう - 余分にアクティビティにフラグを渡して、作成するフラグメントのセットを指定します。

5

EDIT:実際に上に移動したいものに移動しました。

アクティビティにデータを渡す場合は、で使用されている意図でIntent.putExtra()のバージョンを呼び出します。次に、getIntent().getStringExtra()を使用して、アクティビティで余分な文字列を取得できます。

最初のアクティビティには、myStringという文字列データがあるとします。あなたがどうなるonCreateであなたの新しい活動で今

Intent intent = new Intent(this, SecondActivity.class); 
intent.putExtra(EXTRA_NAME_CONSTANT, myString); 
startActivity(intent); 

String myString = this.getIntent() 
     .getStringExtra(EXTRA_NAME_CONSTANT, "default return value here"); 

いくつかの注意事項:そのEXTRA_NAME_CONSTANTについては

  • 、私は、フォームの文字列定数を作るために意味ですか"your.package.name.SomeString"(例: "com.example.MyString")。個人的には、余分な名前についてはリソース(形式:getString(R.string.extra_my_string))を使用しています。パッケージ名の前に接頭辞を付けることをお勧めします。
  • 文字列から配列に、さまざまな種類のデータを入れて、シリアライズ可能なデータにすることができます。

代わりの異なるレイアウトの向きのためseparete活動を行うことusing resource qualifiers to provide alternative layouts考えます。

ので、同じような構造で2つのレイアウトを作成し、要約すると、両方のXMLファイルは同じ名前が付けられ

/res/layout/yourlayout.xml 
/res/layout-land/yourlayout.xml 

。次に、デフォルトのポートレートレイアウトを1つにし、ランドスケープ版をもう1つに作成します。

onCreateでレイアウトを拡張したとき(実行時に自動的にレイアウトが変更されたとき)、正しいレイアウトが選択されます。

+0

私は異なるレイアウトの向きに対して別々のアクティビティを作ろうとはしませんが、2つのペインがあり、どちらもフィットできない場合は、その2番目のペインに新しいアクティビティが必要です。ある活動から別の活動に断片を渡したい。各オプションは、チェックボックスとテキスト編集のレイアウトを生成するので、2つのオプションが同じレイアウトを共有することはありません。 – Hank

+0

ああ。あいまいな言葉「断片」によって、私はあなたが望むデータの種類を意味するものと考えています。私は私の答えを更新します。 – Ribose

+0

フラグメントは、このメソッドをExtraに配置することはできません。フラグメントを意味する場合は、次のようになります。http://developer.android.com/reference/android/app/Fragment.html – Hank

関連する問題