我定义了一个由两个TextView
s 和一个 s组成的复合组件EditText
。在这个复合组件的类中,我定义了一个返回EditText
视图的 getter 方法,以便我可以在我的活动方法中设置一个OnFocusChangeListener
this 。EditText
onCreate
但是,在onFocusChange
方法中,我需要访问复合组件类中定义的一些方法,但我可用的只有视图对象。是否可以在复合组件类中访问这些方法?也许我应该重新考虑代码的结构?
复合组件类(为简洁起见):
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
}
}
真的很感激任何提示。谢谢。