无法在Android上的BackPress上获得SearchView的价值

时间:2018-04-26 06:11:20

标签: android android-layout android-studio android-fragments searchview

我正在开发一种功能,我从API中获取客户数据。我的片段中也有一个SearchView

现在问题是,当我在SearchView中输入文本然后点击搜索按钮然后它会显示已过滤客户的列表,之后如果我选择一个客户并转到详细信息页面,之后我从详细信息页面返回,然后SearchView包含我之前输入的文本,但我没有根据搜索获取数据。我正在获取所有客户的列表,因为搜索字段在params中为空。

我该怎么办?

摘录:

  searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            if (searchView.getQuery().length() == 0) {
                Toast.makeText(getActivity(), R.string.name_blank_caution, Toast.LENGTH_LONG).show();
            } else {
                AdvisorListApi();
                searchView.clearFocus();
            }

            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });

并在params

    HashMap<String, String> params = new HashMap<String, String>();
    params.put("api_token", user.get("api_token"));
    params.put("user_id", user.get("id"));
    params.put("prefer", searchingCriteria.get("prefer"));
    params.put("financial_concern", searchingCriteria.get("financial_concern"));
    params.put("search_name", searchView.getQuery().toString());
    params.put("sort_by", sort_by);
    params.put("contacted", contacted);
    params.put("non_contacted", non_contacted);
    params.put("blocked", blocked);

1 个答案:

答案 0 :(得分:0)

您可以再次使用onResume()方法调用API。

    @Override
    protected void onResume() {
    super.onResume();
    searchView.setQuery("", false);
    }

或者您可以在SearchView中清除文本。

CATEGORIES = (
    (1, 'Mountains'),
    (2, 'Animals'),
    (3, 'Macro'),
    (4, 'People')
)

class Photo(models.Model):
    title = models.CharField(max_length=150)
    image = models.ImageField()
    description = models.TextField()
    category = models.IntegerField(choices=CATEGORIES)
    published = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title