我有A类和B类。A类在这里称B类:

public void onClick(View v){
    //respond to clicks
    new MyTask().execute();


在这个新任务中,我做了一些网络垃圾,最终找到了一个我想传递回A类的字符串。

但是我似乎做不到。我试图做类似classA.textfield.setText(text)的事情,但这没有用。而且看起来类也不能返回值。我已经看到一些标记为相似的内容,但是我认为它们并不能解决我的问题,如果可以,我也不知道如何实现它们。我觉得这一定是有一种非常简单的方法来完成的,但是我所看到的唯一建议是,听起来甚至很相似的声音正在制作新版本的Class A,但这听起来非常错误。

最佳答案

这是CallbackActionListener编码模式显示其强度的地方。

在您的MyTask类中,在类声明后添加以下代码:

public interface MyTaskActionListener{
    public void didFinish(String result);
}


将成员添加到MyTask类:

private MyTaskActionListener listener;


现在,将方法setActionListener添加到MyTask中:

public void setActionListener(MyTaskActionListener l){
    listener = l;
}


接下来,在启动MyTask之前,设置侦听器:

MyTask task = new MyTask();
task.setActionListener(new MyTaskActionListener(){
    public void didFinish(String result){
        yoirTextView.setText(result);
    }
});


最后但并非最不重要的一点是,在MyTask的onPostExecute中调用didFinish():

protected void onPostExecute(String result){
    listener.didFinish(result);
}

关于java - java在另一个类中编辑文本字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21352488/

10-09 00:31