我知道这是一个简单的问题,但我错过了一些东西.
我有2个类:MainActivity和CustomView.我有这个CustomView的XML布局.
我想从我的CustomView类访问我的所有MainActivity变量并修改它们,我试图获取上下文但它不起作用.
MainActivity类:
MyCustomView customV; int myVar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.start_page); customV = (MyCustomView) findViewById(R.id.view2); myVar = 5; }
MyCustomView类:
public class MyCustomView extends TextView { public MyCustomView(Context context) { super(context); init(); } public MyCustomView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MyCustomView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } context.myVar = 7 //this is what I'm trying to do...
我也试过getContext,但是没用.你能帮我么?
通过尝试从您Activity
的TextView
子类中直接访问变量,您引入了子类Actity
和自定义之间的紧密耦合TextView
,这实际上阻碍了自定义的可重用性,TextView
因为它只能在该类型中Activity
使用,在另一个布局中使用它打破一切.基本上,我会说这是糟糕的设计,不会推荐这种方法.
您只需向自定义添加方法TextView
,并在那里使用变量:
public class MyCustomView extends TextView { // your code public void setVariable(int myInt){ //use the int here, either set a member variable //or use directly in the method } }
在你的 Activity
customV = (MyCustomView) findViewById(R.id.view2); customV.setVariable(5);