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 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() {
@ -37,17 +46,10 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
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 {
private var config: BottomSheetConfig? = null
const val REQUEST_CODE_ADD_NEW_OBJECT = 100
fun create(
@ -62,14 +64,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
): BottomSheetFragment {
val bottomSheetFragment = newInstance(row.bottomSheetType)
bottomSheetFragment.show(fragmentManager, "bottomSheet")
// bottomSheetFragment.configure(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
this.config = BottomSheetConfig(row, delegate, rowRepresentableEditDescriptors, isClearable, currentCurrency, isDeletable, valueHasPlaceholder)
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? {
//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)
@ -118,11 +95,28 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
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()
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?) {
super.onActivityResult(requestCode, resultCode, data)

Loading…
Cancel
Save