Java 从异步任务类获取值到另一个类
这是我的asyncResponse.javaJava 从异步任务类获取值到另一个类,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
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
}
}