访问Android复合组件的方法

时间:2013-08-26 19:19:33

标签: android view methods components

我已经定义了一个由两个TextView和一个EditText组成的复合组件。在此复合组件的类中,我定义了一个返回EditText视图的getter方法,以便我可以在OnFocusChangeListener中为EditText设置onCreate我活动的方法。

但是,在onFocusChange方法中,我需要访问Compound Component类中定义的一些方法,但我所拥有的只是视图对象。是否可以在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

    }


}

非常感谢任何提示。感谢。

1 个答案:

答案 0 :(得分:0)

制作cc1cc2活动的字段,并在CompoundComponent中定义您需要的任何方法,