编程语言
首页 > 编程语言> > java – 在CustomView类中获取MainActivity上下文

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