这是我的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());
}
}
答案 0 :(得分:1)
您必须注册回调到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());
}
}
不要使用静态回调。您可以通过实施asyncResponse
或Anonymous
在您的调用类中实现。 processFinish()
实施必须公开并附带@Override
注释。
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
}
}
建议 - 关注naming convention in java以使代码更具可读性。
答案 1 :(得分:0)
在Android Studio中,而不是尝试覆盖您自己尝试的方法,看看Android Studio是否会为您执行此操作,因此我会复制您的旧方法代码,然后删除。转到要实现的界面,然后按Alt + Enter,然后您将看到“实施方法”。一旦你这样做,你的方法不应该有任何冲突的错误,让我知道这是否有效:)
答案 2 :(得分:0)
您的类AsyncStatus和类试用版是否在同一个包中?如果没有,您的AsyncStatus无法访问您的trialmenu方法,或将方法processFinish更改为public。