TextView
2 つの と 1つので構成される複合コンポーネントを定義しましたEditText
。この複合コンポーネントのクラスでは、ビューを返す getter メソッドを定義して、アクティビティのメソッドでこれにEditText
を設定できるようにしました。OnFocusChangeListener
EditText
onCreate
ただし、このonFocusChange
メソッドでは、Compound Component クラスで定義されたいくつかのメソッドにアクセスする必要がありますが、使用できるのはビュー オブジェクトだけです。複合コンポーネント クラスでこれらのメソッドにアクセスすることは可能ですか? おそらく、コードの構造を再考する必要がありますか?
複合コンポーネント クラス (簡潔にするために簡略化):
public class CompondComponent extends LinearLayour {
private EditText editText;
public CompoundComponent(Context context, AttributeSet attrs) {
super(context, attrs);
// Inflate layout etc.
editText = (EditText) findViewById(R.id.compound_component);
}
// getter
public EditText getEditText() {
return editText;
}
}
アクティビティ:
public class MyActivity extends Activity implements View.OnFocusChangeListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity);
CompoundComponent cc1 = (CompoundComponent) findViewById(R.id.myComponent1);
cc1.getEditText().setOnFocusChangeListener(this);
CompoundComponent cc2 = (CompoundComponent) findViewById(R.id.myComponent2);
cc2.getEditText().setOnFocusChangeListener(this);
}
public void onFocusChange(View v, boolean focus) {
// need to invoke cc's methods here, i.e. for cc1 or cc2
}
}
ヒントをいただければ幸いです。ありがとう。