当前位置:  开发笔记 > 编程语言 > 正文

在CustomView类中获取MainActivity上下文

如何解决《在CustomView类中获取MainActivity上下文》经验,为你挑选了1个好方法。

我知道这是一个简单的问题,但我错过了一些东西.
我有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,但是没用.你能帮我么?



1> 2Dee..:

通过尝试从您ActivityTextView子类中直接访问变量,您引入了子类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);

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有