大家下午好!我正在 Android Studio 中开发一个搜索系统,但我是 Java 语言的初学者,我的错误可能很愚蠢。我想帮助理解两件事。第一:为什么我不能访问 this.getApplication()).setQuery(query);
里面的 onQueryTextSubmit
第二。为什么放置 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
,返回 null
,因为您的 onQueryTextSubmit
和 onQueryTextChange
是未在 getQuery
之前调用。
如果您的监听器被触发,则将设置查询,但之前已执行 getQuery
。
如果你想要查询,你可以添加一个按钮并在按钮按下时执行 getQuery
的代码。
在您的情况下,我认为最好的方法是在第一次启动时使用常量值初始化 s
。
关于java - this.getApplication()).getQuery() 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48930166/