如何在替换另一个片段的同时保留片段中的搜索菜单文本



我有一个"片段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加载字符串,而不是重新创建

最新更新