问题描述
我有一个带有搜索菜单和搜索侦听器的“片段A”。侦听器正在按预期方式工作。但是,我想要实现的是,当我离开此“片段A”并返回到该片段时,我想使用先前的搜索查询来扩展搜索菜单。当前,当我替换该片段时,将调用查询侦听器,并在onQueryTextChange
方法中发送一个空字符串。
我所做的例子是
class MainFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
): View = inflater.inflate(R.layout.main_fragment,container,false)
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
setHasOptionsMenu(true)
message.setonClickListener {
parentFragmentManager.beginTransaction()
.replace(R.id.container,BlankFragment()).addToBackStack(null)
.commit()
}
}
override fun onCreateOptionsMenu(menu: Menu,inflater: MenuInflater) {
inflater.inflate(R.menu.search,menu)
val searchItem = menu.findItem(R.id.action_search)
val searchView = searchItem?.actionView as SearchView?
searchView?.setonQueryTextListener(object : android.widget.SearchView.OnQueryTextListener,SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
query?.let { Log.d("zzz",it) }
return false
}
override fun onQueryTextChange(newText: String?): Boolean {
newText?.let { Log.d("zzzzz",it) }
return false
}
})
super.onCreateOptionsMenu(menu,inflater)
}
}
是否有实现此目标的任何标准方法。预先感谢。
解决方法
可能您可以将查询保存到SharedPreferences,然后在片段中创建onResume方法。在onResume中时,请从SharedPreferences中加载字符串,而不是重新创建