this.getApplication())。getQuery()始终返回null

时间:2018-02-22 14:41:08

标签: java android searchview

人们,下午好!我在Android Studio中开发了一个搜索系统,但我是Java语言的初学者,可能我的错误很愚蠢。我想帮助理解两件事。第一:为什么我无法访问import psutil obj_Disk = psutil.disk_usage('/') print (obj_Disk.total / (1024.0 ** 3)) print (obj_Disk.used / (1024.0 ** 3)) print (obj_Disk.free / (1024.0 ** 3)) print (obj_Disk.percent) 内的this.getApplication()).setQuery(query);和第二个onQueryTextSubmit。为什么放HomeActivity.this.getApplication()它不会确认错误,但也不会访问最后queryloadFirstPage的值?

((MyApplication) this.getApplication()).setQuery(null);

// listening to search query text change
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String query) {
    //                loadFirstPage(builder,query);
        ((MyApplication) HomeActivity.this.getApplication()).setQuery(query);
        return false;
    }

    @Override
    public boolean onQueryTextChange(String query) {
//                loadFirstPage(builder,query);
        ((MyApplication) HomeActivity.this.getApplication()).setQuery(query);
        return false;
    }
});

String s = ((MyApplication) this.getApplication()).getQuery();
loadFirstPage(builder,s);
return true;
}

提前致谢

1 个答案:

答案 0 :(得分:0)

您应该分析您的代码流。如果代码启动,则设置监听器(图像中的1.和2.),但不会调用它们。 (你只设置它们。)

之后,getQuery将被执行,返回null,因为onQueryTextSubmitonQueryTextChange未在getQuery之前被调用。

如果您的侦听器被触发,则将设置查询,但getQuery的执行之前已完成。

enter image description here

如果您想要查询,可以在按下按钮时添加按钮并执行getQuery的代码。 在你的情况下,我认为最好的方法是,在第一次启动时使用常量值初始化s