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
,因为你的onQueryTextSubmit
和onQueryTextChange
在[=之前没有被调用10=].
如果您的侦听器被触发,则会设置查询,但 getQuery
的执行之前已完成。
如果你想查询,你可以添加一个按钮并在按钮按下时执行getQuery
的代码。
在您的情况下,我认为最好的方法是在第一次启动时使用常量值初始化 s
。
大家下午好!我正在 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
,因为你的onQueryTextSubmit
和onQueryTextChange
在[=之前没有被调用10=].
如果您的侦听器被触发,则会设置查询,但 getQuery
的执行之前已完成。
如果你想查询,你可以添加一个按钮并在按钮按下时执行getQuery
的代码。
在您的情况下,我认为最好的方法是在第一次启动时使用常量值初始化 s
。