Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从异步任务类获取值到另一个类_Java_Android_Android Asynctask - Fatal编程技术网

Java 从异步任务类获取值到另一个类

Java 从异步任务类获取值到另一个类,java,android,android-asynctask,Java,Android,Android Asynctask,这是我的asyncResponse.java public interface asyncResponse { void processFinish(String output); } 这是我的trialmenu.java,我想在这里检索我的值 abstract class trialmenu extends AppCompatActivity implements asyncResponse{ private ImageView logo; private TextView st

这是我的asyncResponse.java

 public interface asyncResponse {

    void processFinish(String output);
}
这是我的trialmenu.java,我想在这里检索我的值

abstract class trialmenu extends AppCompatActivity implements asyncResponse{
private ImageView logo;
private TextView status;

AsyncStatus asyncTask =new  AsyncStatus();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.newmenulayout);

    logo = (ImageView) findViewById(R.id.imglogo);
    status = (TextView) findViewById(R.id.txtStatus);

    AsyncStatus.delegate = this;


}



void processFinish(String output) {
    status.setText(output);


}
}
这是我的AsyncStatus.java,出于隐私原因,我没有发布我的doInBackground

public class AsyncStatus extends AsyncTask<String, String, StringBuilder> {

public static asyncResponse delegate=null;

@Override
protected void onPostExecute(StringBuilder result) {
    super.onPostExecute(result);

    delegate.processFinish(result.toString());


}
}
公共类AsyncStatus扩展了AsyncTask{
公共静态异步响应委托=null;
@凌驾
PostExecute上受保护的void(StringBuilder结果){
super.onPostExecute(结果);
delegate.processFinish(result.toString());
}
}

在Android Studio中,不要试图覆盖你自己的方法,试试看Android Studio是否会为你做这件事,所以我会复制你的旧方法代码,然后删除。转到您正在实现的界面,然后按Alt+Enter,然后您将看到“实现方法”。一旦您这样做了,您的方法就不应该有任何冲突错误,让我知道这是否有效:)

您的类AsyncStatus和类trialmenu是否在同一个包中?否则,AsyncStatus将无法访问trialmenu方法,或将方法processFinish更改为public。

您必须将回调注册到
AsyncTask

 public class AsyncStatus extends AsyncTask<String, String, StringBuilder> {

    public asyncResponse delegate=null;

    public void setDelegate(asyncResponse delegate){
            this.delegate=delegate;
    }

    @Override
    protected void onPostExecute(StringBuilder result) {
        super.onPostExecute(result);

        delegate.processFinish(result.toString());


    }
}

建议-遵循以使代码更具可读性。

是否在构造函数中初始化了异步响应?在类中使processFinish成为公共的,并且processFinish中缺少@Override。应该是
@Override public void processFinish(){…}
您需要用@Override注释错误函数。异步任务实际执行在哪里?我必须通过AsyncTask发送参数。e、 g new AsyncStatus().execute(studID);您必须调用asyncTask.execute(studID)。是的,它在同一个包中
abstract class trialmenu extends AppCompatActivity implements asyncResponse {
    private ImageView logo;
    private TextView status;
    AsyncStatus asyncTask = new AsyncStatus();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.newmenulayout);
        logo = (ImageView) findViewById(R.id.imglogo);
        status = (TextView) findViewById(R.id.txtStatus);
        asyncTask.setDelegete(this);

    }

    @Override
    public void processFinish(String output) {
        // Callback
    }
}