首页 > 解决方案 > 无法从片段中的 SearchView.SearchAutoComplete onCreateView 获取文本

问题描述

在我的 FirstFragmentonCreateView()方法中,我有以下元素:

public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle bundle) {
    initSearchView();
    String selectedItem = search.getText().toString();
    Log.d(TAG, "onCreateView " + selectedItem); //Always empty
}

如您所见,我调用initSearchView()的方法如下所示:

private void initSearchView() {
    SearchView searchView = rootView.findViewById(R.id.search);
    search = searchView.findViewById(androidx.appcompat.R.id.search_src_text);
    search.setOnItemClickListener((adapterView, view, position, id) -> {
        Item Item = (Item) adapterView.getItemAtPosition(position);
        search.setText(item.getItemName()); //Set item name
        goToItemFragment(item.getItemName());
    });
}

如您所见,一旦选择了一个项目,我就将该项目的名称设置为该search对象。这很好用,因为我看到项目的名称放在了search中。

这是我用来转到 SecondFragment 的方法:

private void goToISecondFragment(String itemName) {
    ActionFirstFragmentToSecondFragment action = actionFirstFragmentToSecondFragment();
    action.setItemName(itemName);
    Navigation.findNavController(rootView).navigate(action);
}

当我从 SecondFragment 回到 FirstFragment 时,问题就来了。即使我在搜索中看到选定的项目名称,当片段开始时,该日志语句始终为空,这意味着它在搜索中看不到该文本。

当我从 SecondFragment 返回到 FirstFragment 时,如何从搜索中获取可见的文本?谢谢

标签: androidandroid-fragmentssearchview

解决方案


推荐阅读