android – 将UI控件从活动传递到类

我多次坚持这个问题而且我以不同的方式解决了这个问题,我不确定我是以正确的方式做到的.
我在以下示例中简化了问题.我知道我只能将数据传递给类,但我确实想传递editText,因为我遇到了更困难的UI控件的问题.

mainactivity.java

public class mainactivity extends Activity {

    public EditText clickEditText;
    int count =0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        newTxt();
    }

    public void newTxt() {
        txt = new MyText(context);
        txt.updateTextEdit("Main Activity");
    }
}

myText.java

public class MyText
{
    private Context _context;

    // constructor
    public MyText(Context context) 
    {
        _context = context;
    }

    public void updateTextEdit(String str)
    {
        private EditText strEditText;
        strEditText= (EditText)findViewById(_context.R.id.editTextClick); // ????
        strEditText.setText(str + " and myTxt");
    }
}

如果你能解释我如何修复updateTextEdit函数.我通过了主要活动的背景.如何更改editText?非常感谢你!!!

解决方法

如果您真的想以这种方式执行此操作,则需要保存对Activity的引用,而不是Context.像这样:

public class MyText
{
    private Activity _activity;

    // constructor
    public MyText(Activity activity) 
    {
        _activity= activity;
    }

    public void updateTextEdit(String str)
    {
        private EditText strEditText;
        strEditText= (EditText)activity.findViewById(R.id.editTextClick);
        strEditText.setText(str + " and myTxt");
    }
}

在newTxt()中你需要改变:

txt = new MyText(context);

至:

txt = new MyText(this);

但是,将此方法放入您的活动中会不会更容易?你为什么要在另一堂课?如果它确实需要在另一个类中,您可以使该类成为您的活动的内部类,并且您仍然可以访问活动的方法和成员变量.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...