findViewById のドキュメントから:
Look for a child view with the given id. If this view has the given id, return this view.
しかし、その裏に何があるかはわかりません。
たとえば、次のTextView
ようなレイアウト xmlがあるとします。
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
次に、コードでこの TextView を取得します。
TextView txt1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txt1 = (TextView)findViewById(R.id.txt);
txt1.setText("Some text");
}
別の場所 (ボタン onClickListener など) で、この TextView を再度取得します。
((Button) findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
TextView txt2 = (TextView) findViewById(R.id.txt);
Log.d(TAG,"txt2: " + txt2.getText().toString());
Log.d(TAG,"txt1: " + txt1.getText().toString());
//Change txt2 text
txt2.setText("aaa");
Log.d(TAG,"txt2: " + txt2.getText().toString());
Log.d(TAG,"txt1: " + txt1.getText().toString());
//change txt1 text
txt1.setText("bbb");
Log.d(TAG,"txt2: " + txt2.getText().toString());
Log.d(TAG,"txt1: " + txt1.getText().toString());
}
});
結果は次のとおりです。
txt2: Some text
txt1: Some text
txt2: aaa
txt1: aaa
txt2: bbb
txt1: bbb
それを説明していただけますか?findViewById は静的インスタンスのみを提供しますか?