Java 知道类的方法是否结束
我有一个类,它给我一个数据库字符串。 我在活动中调用该类,然后使用该字符串。 返回stirng是因为我通过Log.d获得它,但是我的活动的字符串变量没有得到它,因为程序在不等待类结束的情况下继续。 对不起,我的英语不好 代码: 活动:Java 知道类的方法是否结束,java,android,class,Java,Android,Class,我有一个类,它给我一个数据库字符串。 我在活动中调用该类,然后使用该字符串。 返回stirng是因为我通过Log.d获得它,但是我的活动的字符串变量没有得到它,因为程序在不等待类结束的情况下继续。 对不起,我的英语不好 代码: 活动: Cargar_Imagen ci = new Cargar_Imagen(); String s = ci.Cargar_Imagen(params...); 类别: public class Cargar_Imagen { privat
Cargar_Imagen ci = new Cargar_Imagen();
String s = ci.Cargar_Imagen(params...);
类别:
public class Cargar_Imagen {
private Map<String, String> params;
String sBitmap = "";
public String Cargar_Imagen(final String email, final String id, final String f1, final Context context, final String type, final View v){
StringRequest stringRequest = new StringRequest(Request.Method.POST, "https://feticher.webcindario.com/cargar_imagen.php",
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
Log.d("Imagen", "Se cargo la foto");
try {
JSONObject jsonRespose = new JSONObject(s);
sBitmap =jsonRespose.getString("imagen");
Log.d("Imagen", "STRING: " + sBitmap);
Download_Image download_image = new Download_Image();
download_image.Download_Image(f1, type,context, v, sBitmap);
} catch (JSONException e) {
e.printStackTrace();
Log.d("Imagen", "ERROR: " + e.getMessage());
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Imagen", "No se pudo cargar la foto");
}
}) {
@Override
protected Map<String, String> getParams(){
Log.d("Imagen", "Ejecutando MAP Cargar Imagen");
Log.d("Imagen", "DATOS: " + id + " " + email + " " + f1);
Map<String, String> params = new Hashtable<String, String>();
params.put("id", id);
params.put("email", email);
params.put("foto", f1);
Log.d("Imagen", "PASO POR AKI");
return params;
}};
RequestQueue queue = Volley.newRequestQueue(context);
queue.add(stringRequest);
return sBitmap;
}
}
您已经编写了retrun sBitmap;,请尝试使用正确的返回,并告诉我们它是否解决了问题。sBitmap是在方法执行后分配的,因为它是异步的。一种方法是使用方法[例如onFinishString]声明一个接口,并将其作为Cargar_Imagen的参数传递,然后可以在onResponse.Listener方法中调用它
这里似乎使用了并发和回调方法的概念,因为在Cargar_Imagen。。。方法结束,因为它被分配到回调方法中的另一个线程中。很抱歉,我这里写得不好,我使用return,应用程序在movil中运行良好,但不执行我想要的操作。在活动中,我必须执行什么操作?如果您从活动中调用Cargar_Imagen,请在活动中实现接口,并将其传递给新参数。这应该可以完成任务。我用一个例子更新了我的答案,它说:非静态方法onFinish不能从静态上下文引用:/If make it static make a problem of lenguaje level1.7:语言级别1.7不支持静态接口方法调用。你确定你像callback.onFinish那样调用它,而不是callback.onFinish吗?对不起,我看不到最终结果回拨:/
// The interface
interface CallBack {
public void onFinish(String response);
}
// The activity (which calls Cargar_Imagen) should implement CallBack
public class MainActivity extends Activity implements CallBack
public void onFinish(String response) {
// here the method did finish, do something with the string
}
// somewhere you call to Cargar_Imagen
String s = ci.Cargar_Imagen(params..., this);
}
// the method signature should receive a CallBack
public String Cargar_Imagen(final String email, final String id, final String f1, final Context context, final String type, final View v, final CallBack callback){
/* code .... */
// ...
// in your onResponse
callback.onFinish(sBitmap);