2013-08-26 69 views
0

我已經定義了由兩個TextView和一個EditText組成的複合組件。在該化合物組分的類中,我定義了一個返回EditText視圖的getter方法,以便我可以在我的活動的onCreate方法中將OnFocusChangeListener設置爲此EditTextAndroid複合組件的訪問方法

但是,在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 

    } 


} 

將非常感謝任何提示。謝謝。

回答

0

cc1cc2活動的領域,並確定你在CompoundComponent需要的任何方法,

+0

感謝亞歷克斯。但是,如何知道是否在主活動的onFocusChange中調用'cc1'或'cc2'?即,當'cc1'或'cc2'失去焦點時,調用onFocusChange;我怎麼知道事件發生在哪一個? –

+0

public void onFocusChange(View v,boolean focus){ CompoundComponent cc =(CompoundComponent)v; cc.doSomething(); } –

+0

謝謝,但電腦說不。 「CompoundComponent」不僅僅是一個「EditText」。它有其他的視圖對象(例如'TextView'),所以我不能將'v',即一個'EditText',作爲'CompoundComponent'。嗯... –