DialogFragment не сохраняется после изменения входных / выходных переходов - PullRequest
0 голосов
/ 21 мая 2019

Я реализую фрагмент диалога, который имеет пользовательские переходы (входящий и существующий внизу экрана). Проблема, с которой я столкнулся сейчас, заключается в том, что когда пользователь помещает мое приложение в фоновом режиме, а затем возобновляет его, переход перезапускается, пока я хочу, чтобы диалоговое окно отображалось, когда пользователь повторно входит в приложение без перехода.

Это мой код:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...