Я реализую фрагмент диалога, который имеет пользовательские переходы (входящий и существующий внизу экрана). Проблема, с которой я столкнулся сейчас, заключается в том, что когда пользователь помещает мое приложение в фоновом режиме, а затем возобновляет его, переход перезапускается, пока я хочу, чтобы диалоговое окно отображалось, когда пользователь повторно входит в приложение без перехода.
Это мой код:
MyFragmentDialog
class MyFragmentDialog : BaseDialogFragment() {
override fun getDialogLayout(): Int {
return R.layout.episode_dialog_layout
}
override fun setUp() {
}
override fun setupDialog(bundle: Bundle?) {
}
override fun getFragmentDialogName(): String {
return ""
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_TITLE, R.style.MyDialogTheme)
retainInstance = true
}
override fun onDestroyView() {
val dialog = dialog
// handles https://code.google.com/p/android/issues/detail?id=17423
if (dialog != null && retainInstance) {
dialog.setDismissMessage(null)
}
super.onDestroyView()
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
dialog!!.window!!.attributes.windowAnimations = R.style.MyDialogTheme
val width = WindowManager.LayoutParams.MATCH_PARENT
val height = WindowManager.LayoutParams.WRAP_CONTENT
dialog!!.window!!.setLayout(width, height)
dialog!!.window!!.setGravity(Gravity.BOTTOM)
}
override fun onResume() {
super.onResume()
}
companion object {
fun newInstance(bundle: Bundle?): MyFragmentDialog {
val dialog = MyFragmentDialog()
dialog.arguments = bundle
return dialog
}
}
}
BaseDialogFragment
abstract class BaseDialogFragment : DialogFragment()
{
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(getDialogLayout(),container,false)
setUp()
setupDialog(arguments)
return view
}
protected abstract fun getDialogLayout() : Int
protected abstract fun setUp()
protected abstract fun setupDialog(bundle : Bundle?)
abstract fun getFragmentDialogName() : String
}
styles.xml
<style name="MyDialogTheme" parent="android:Theme.Dialog">
<!-- No backgrounds, titles or window float -->
<item name="android:windowBackground">@android:color/white</item>
<item name="android:windowAnimationStyle">@style/MyAnimation.Window</item>
</style>
<style name="MyAnimation.Window" parent="@android:style/Animation.Activity">
<item name="android:windowEnterAnimation">@anim/slide_up</item>
<item name="android:windowExitAnimation">@anim/slide_bottom</item>
</style>