我正在开发一个应用程序,它基于json。我想将数据从一个类传递给onSuccess方法中接收的其他类。当我请求数据时,数据将被正确接收,但当我将该数据调用到其他类时,将发生空指针错误。 我的方法是
@Override
protected Void doInBackground(Void... params1) {
RequestParams params;
params = new RequestParams();
params.add("username", str_emailId);
params.add("password", str_password);
params.add("action", action);
String str_result=constant.login(params);
Log.d("Result::--",str_result);
return null;
}
我的登录方法是
public String login( RequestParams params1) {
client = new AsyncHttpClient();
client.post(Constant.check_login_user, params1, new TextHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, String response) {
str_result = response;
Log.d("Str_Result: ", str_result);
}
@Override
public void onFailure(int statusCode, Header[] headers, String response, Throwable e) {
if (statusCode == 401) {
jsonString[0] = response;
Log.d("onFailure: ", jsonString[0]);
}
}
});
return str_result;
}
我在Success方法中得到数据并且它将在日志中打印ok但是当返回str_result变量时它将返回null并且我在doInBackground()方法中打印日志它将返回空指针错误我不知道如何?请任何人都可以帮我提前知道如何打印这些数据。
答案 0 :(得分:1)
您可以使用EventBus将模型发布到所有活动的片段或活动。
答案 1 :(得分:0)
您的POST方法是异步功能。为简单起见,想象它开始在后台运行它,而其余的应用程序继续做它正在做的任何事情。 POST方法完成后,它将调用onSuccess()方法或onFailure()方法,具体取决于POST方法是成功还是失败。你看,你调用POST方法并立即返回结果,即使POST方法没有完成。您可以想象您的登录方法是这样做的。
所以你看,你在登录方法完成执行之前返回结果。
如何解决?
接收String结果的类应该实现如下函数:
public void setResult(String result) {...}
并且您的登录方法应该在onSuccess()方法中调用它,如下所示:
@Override
public void onSuccess(int i, Header[] headers, String response) {
// Your login method finished, now you can send result to receiving object
str_result = response;
receivingClassObject.setResult(str_result);
}