0

我定义了一个由两个TextViews 和一个 s组成的复合组件EditText。在这个复合组件的类中,我定义了一个返回EditText视图的 getter 方法,以便我可以在我的活动方法中设置一个OnFocusChangeListenerthis 。EditTextonCreate

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

    }


}

真的很感激任何提示。谢谢。

4

1 回答 1

0

Makecc1cc2Activity 的字段并定义您需要的任何方法CompoundComponent

于 2013-08-26T19:31:05.183 回答