this.getApplication()).getQuery() 总是 returns 空

this.getApplication()).getQuery() always returns null

大家下午好!我正在 Android Studio 中开发搜索系统,但我是 Java 语言的初学者,我的错误可能很愚蠢。我想帮助理解两件事。第一:为什么我不能访问 onQueryTextSubmit 和第二个中的 this.getApplication()).setQuery(query);。为什么放HomeActivity.this.getApplication()它不承认错误,也不访问最后的loadFirstPage中的query的值?

((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. 和 2.),但它们不会被调用。 (你只设置它们..)

之后会执行getQuery,也就是returns null,因为你的onQueryTextSubmitonQueryTextChange在[=之前没有被调用10=].

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

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