Fixes BottomSheetFragment crash

od
Laurent 6 years ago
parent 2d77f1ff89
commit 7d5f63f30b
  1. 66
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt

@ -27,6 +27,15 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.TransactionRow
import net.pokeranalytics.android.ui.viewmodel.BottomSheetViewModel import net.pokeranalytics.android.ui.viewmodel.BottomSheetViewModel
import java.util.* import java.util.*
class BottomSheetConfig(var row: RowRepresentable,
var delegate: RowRepresentableDelegate,
var rowRepresentableEditDescriptors: ArrayList<RowRepresentableEditDescriptor>?,
var isClearable: Boolean? = true,
var currentCurrency: Currency? = null,
var isDeletable: Boolean? = false,
var valueHasPlaceholder: Boolean? = null) {
}
open class BottomSheetFragment : BottomSheetDialogFragment() { open class BottomSheetFragment : BottomSheetDialogFragment() {
@ -37,17 +46,10 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
ViewModelProviders.of(this).get(BottomSheetViewModel::class.java) ViewModelProviders.of(this).get(BottomSheetViewModel::class.java)
} }
var row: RowRepresentable? = null
var delegate: RowRepresentableDelegate? = null
var currentCurrency: Currency? = null
var valueAsPlaceholder: Boolean = false
private var isClearable: Boolean = true
private var isDeletable: Boolean = false
private var rowRepresentableEditDescriptors: ArrayList<RowRepresentableEditDescriptor>? = null
companion object { companion object {
private var config: BottomSheetConfig? = null
const val REQUEST_CODE_ADD_NEW_OBJECT = 100 const val REQUEST_CODE_ADD_NEW_OBJECT = 100
fun create( fun create(
@ -62,14 +64,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
): BottomSheetFragment { ): BottomSheetFragment {
val bottomSheetFragment = newInstance(row.bottomSheetType) val bottomSheetFragment = newInstance(row.bottomSheetType)
bottomSheetFragment.show(fragmentManager, "bottomSheet") bottomSheetFragment.show(fragmentManager, "bottomSheet")
// bottomSheetFragment.configure(row, delegate, rowRepresentableEditDescriptors, isClearable, currentCurrency, isDeletable, valueHasPlaceholder) this.config = BottomSheetConfig(row, delegate, rowRepresentableEditDescriptors, isClearable, currentCurrency, isDeletable, valueHasPlaceholder)
bottomSheetFragment.row = row
bottomSheetFragment.delegate = delegate
bottomSheetFragment.rowRepresentableEditDescriptors = rowRepresentableEditDescriptors
bottomSheetFragment.isClearable = isClearable ?: true
bottomSheetFragment.isDeletable = isDeletable ?: true
bottomSheetFragment.valueAsPlaceholder = valueHasPlaceholder ?: true
bottomSheetFragment.currentCurrency = currentCurrency
return bottomSheetFragment return bottomSheetFragment
} }
@ -92,24 +87,6 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
} }
private fun configure(row: RowRepresentable,
delegate: RowRepresentableDelegate,
rowRepresentableEditDescriptors: ArrayList<RowRepresentableEditDescriptor>?,
isClearable: Boolean? = true,
currentCurrency: Currency? = null,
isDeletable: Boolean? = false,
valueHasPlaceholder: Boolean? = null) {
this.viewModel.row = row
this.viewModel.delegate = delegate
this.viewModel.rowRepresentableEditDescriptors = rowRepresentableEditDescriptors
this.viewModel.isClearable = isClearable ?: true
this.viewModel.currentCurrency = currentCurrency
this.viewModel.isDeletable = isDeletable ?: false
this.viewModel.valueAsPlaceholder = valueHasPlaceholder ?: false
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
//TODO: When dependency 'com.google.android.material:material:1.1.0' will be available in stable version, upgrade and remove that //TODO: When dependency 'com.google.android.material:material:1.1.0' will be available in stable version, upgrade and remove that
val contextThemeWrapper = ContextThemeWrapper(activity, R.style.PokerAnalyticsTheme) val contextThemeWrapper = ContextThemeWrapper(activity, R.style.PokerAnalyticsTheme)
@ -118,11 +95,28 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
this.configure(this.row!!, this.delegate!!, this.rowRepresentableEditDescriptors, this.isClearable, this.currentCurrency, this.isDeletable, this.valueAsPlaceholder)
config?.let {
this.configure(it)
config = null
}
this.viewModel.load() this.viewModel.load()
initUI() initUI()
} }
private fun configure(configuration: BottomSheetConfig) {
this.viewModel.row = configuration.row
this.viewModel.delegate = configuration.delegate
this.viewModel.rowRepresentableEditDescriptors = configuration.rowRepresentableEditDescriptors
this.viewModel.isClearable = configuration.isClearable ?: true
this.viewModel.currentCurrency = configuration.currentCurrency
this.viewModel.isDeletable = configuration.isDeletable ?: false
this.viewModel.valueAsPlaceholder = configuration.valueHasPlaceholder ?: false
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)

Loading…
Cancel
Save