java - this.getApplication()).getQuery() 总是返回 null

标签 java android searchview

大家下午好!我正在 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,因为您的 onQueryTextSubmitonQueryTextChange 是未在 getQuery 之前调用。

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

enter image description here

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

关于java - this.getApplication()).getQuery() 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48930166/

相关文章:

c# - 导航返回后,菜单项未显示在 Xamarin.Forms 中

android - 如何实现自定义 SearchView 布局?

android - 使用 Android 上的搜索 View 小部件创建搜索界面以在同一 Activity 中的 ListView 中显示结果

java - 如何使用反射来确定Annotation的目标?

java - 使用maven-wildfly插件部署webapp,在deployment目录下部署war

java - 为什么 Jackson 中的 JsonGeneratorDelegate 没有实现 setPrettyPrinter() ?

java - 如何同时更改多个 Eclipse 项目的外部 JAR?

android - 更改图像按钮的图像直到它被按下

java - E/Android运行时: FATAL EXCEPTION: main error in android studio

Android 获取当前日期并在 TextView 中显示