Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.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_String - Fatal编程技术网

Java 变量赋值时仍然为空

Java 变量赋值时仍然为空,java,android,string,Java,Android,String,所以我有这个代码: String query = null; public String createConnection() { new NetworkRequest(new ResultFromAsync() { @Override public void taskCompleted(String result) { query = result; } }).execute(); retur

所以我有这个代码:

String query = null;

public String createConnection() {

    new NetworkRequest(new ResultFromAsync() {
        @Override
        public void taskCompleted(String result) {
            query = result;
        }
    }).execute();

    return query;
}
我遵循MVP设计模式,从我的视图中调用它,在一个按钮点击事件中调用此方法,该方法执行并从模型中创建一个网络请求,然后在第行“query=result;”调试时以字符串形式检索JSON它实际上将存储在结果变量中的内容分配给查询,但当它到达“returnquery”行时,它等于null


有人知道为什么将查询分配给结果变量的值时将其设置为null吗?

将值分配给
query
的方法是异步执行的,这意味着在异步请求完成之前调用
execute()
不会阻塞当前线程,但是马上就回来了。此时变量的值仍然是
null
。无法返回尚未返回的值


考虑调用需要
taskCompleted()
回调中的值的代码

@laalto那么对于这种情况,什么是最好的方法呢?
doSomething(result)
-或者你想用它做什么。顺便问一下:你是想说在我看来调用taskCompleted方法吗?这两个主意听起来都不好。有了静电,你仍然不知道什么时候读它。当结果可用时,让您正在使用的异步框架调用
taskCompleted()
回调,然后对结果执行任何您想要的操作。&这正是它所做的