java – 在CustomView类中获取MainActivity上下文
作者:互联网
我知道这是一个简单的问题,但我错过了一些东西.
我有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,但是没用.
你能帮我么?
解决方法:
通过尝试直接在TextView子类中访问Activity中的变量,可以在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
}
}
并在您的活动中
customV = (MyCustomView) findViewById(R.id.view2);
customV.setVariable(5);
标签:android,custom-view,java,android-context 来源: https://codeday.me/bug/20190724/1526183.html