0
我已經定義了由兩個TextView
和一個EditText
組成的複合組件。在該化合物組分的類中,我定義了一個返回EditText
視圖的getter方法,以便我可以在我的活動的onCreate
方法中將OnFocusChangeListener
設置爲此EditText
。Android複合組件的訪問方法
但是,在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
}
}
將非常感謝任何提示。謝謝。
感謝亞歷克斯。但是,如何知道是否在主活動的onFocusChange中調用'cc1'或'cc2'?即,當'cc1'或'cc2'失去焦點時,調用onFocusChange;我怎麼知道事件發生在哪一個? –
public void onFocusChange(View v,boolean focus){ CompoundComponent cc =(CompoundComponent)v; cc.doSomething(); } –
謝謝,但電腦說不。 「CompoundComponent」不僅僅是一個「EditText」。它有其他的視圖對象(例如'TextView'),所以我不能將'v',即一個'EditText',作爲'CompoundComponent'。嗯... –