複数のアクティビティに 1 つのレイアウトを使用する
Layout インスタンスは、メソッドを使用してアクティビティごとに拡張されますsetContentView
。通常は次のようになりonCreate
ます。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_common_layout);
}
XML
したがって、異なるアクティビティに同じレイアウトを使用しても問題ありません。
あるアクティビティを別のアクティビティ内に表示する
Fragment
API を使用してタスクを完了することができます。詳細については、デベロッパー ガイドをご覧ください。
そのようなレイアウトを宣言すると、Android がフラグメントを作成します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment android:name="com.example.MyFragment"
android:id="@+id/my_fragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
</LinearLayout>
次に、MyFragment
クラスを作成し、必要に応じてロードします。
自分でフラグメントを作成します。Fragment
inXML
レイアウトを定義しないでください:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/my_parent_layout">
</LinearLayout>
親Activity
を作成したら、次のFragment
方法で新しいものを追加できます。
FragmentManager fragmentManager = getFragmentManager()
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
MyFragment fragment = new MyFragment();
fragmentTransaction.add(R.id.my_parent_layout, fragment);
fragmentTransaction.commit();
ここでMyFragment
は、次のように定義されています。
public class MyFragment extends Fragment {
...
}
Android 3.0 未満をターゲットにしている場合は、そのためのサポート パッケージの使用を検討してください。