MainActivityとSubActivityの二つのアクティビティがあるとします。ここでMainActivityが使用するレイアウト(XML)をR.layout.main.xml、SubActivityで使用するレイアウト(XML)をR.layout.sub.xmlとします。それぞれのXMLを示します。
main.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:tools="http://schemas.android.com/tools"> | |
<FrameLayout | |
android:layout_width="fill_parent" | |
android:layout_height="wrap_content"> | |
<TextView | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:id="@+id/main" | |
android:text="MainTextView" /> | |
</FrameLayout> |
sub.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:tools="http://schemas.android.com/tools"> | |
<FrameLayout | |
android:layout_width="fill_parent" | |
android:layout_height="wrap_content"> | |
<TextView | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:id="@+id/sub" /> | |
</FrameLayout> |
ここで、SubActivityからR.layout.main.xmlのTextView(R.id.main)にアクセスするにはLayoutInflaterを使って次のようにします。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class SubActivity extends Activity { | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
// 定石通り、まずは自分のレイアウトを設定する | |
// ちなみにこの処理をしなくてもmain.xmlのViewにアクセス可能 | |
setContentView(R.layout.sub); | |
// LayoutInflaterを使ってmain.xmlのTextViewにアクセスする | |
LayouttInflater layoutInflater = LayoutInflater.from(this); | |
// main.xml(を表現するView)を取得 | |
View mainLayoutView = layoutInflater.inflate(R.layout.main, null); | |
// main.xml内のTextView(R.id.main)を取得 | |
TextView mainTextView = (TextView)mainLayoutView.findViewById(R.id.main); | |
// 取得したTextViewのtextを取得 | |
String mainText = mainTextView.getText(); | |
Log.d("main.xmlのTextViewの値:", mainText); | |
// logcatには以下のように出力される | |
// main.xmlのTextViewの値:MainTextView | |
} | |
} |
この方法を活用すると、この例のように他のアクティビティのViewにアクセスするだけでなく、ボタン押下のタイミングで異なるレイアウトを切り替えたり、ヘッダ、フッタのような共通レイアウトの使用を行うことができます。
0 件のコメント:
コメントを投稿