我面临一个问题,希望你能帮助我解决。在我的 Android 应用程序中,我使用通常的方式 ( Snackbar.make().show()
) 显示一个 Snackbar。但是,我还必须处理配置更改(例如从纵向到横向的方向更改)。
现在,如果配置发生变化,Snackbar 就会消失,这是我没想到的。我对 ProgressDialog 和 AlertDialog 有同样的问题,我通过使用 DialogFragment 的自定义子类解决了这个问题。
我的 AsyncTasks 也有这个问题,我通过使用我保留的 Fragment 的自定义子类(setRetainInstance(true)
在onCreate()
Fragment 中)解决了这个问题,它保留了对我的 AsyncTask 的引用。在这两种情况下,每个 Fragment 都有一个 Activity 必须实现的回调接口,我在 / 期间设置/取消设置onAttach()
回调onDetach()
。
但是,Snackbar 似乎有所不同,因为它附加到 View 而不是 Context ,例如 ProgressDialog (在getDialog()
我的 DialogFragment 中我可以使用 new ProgressDialog(getActivity())
)。
那么在配置更改后我应该何时以及如何显示 Snackbar 呢?是使用 Fragment 还是应该尝试通过在我的 Activity 上保存/恢复一些私有变量来解决这个问题savedInstanceState
?