Fixes lifecycle crash

od
Laurent 6 years ago
parent 52b43cddf8
commit c87de6a601
  1. 11
      app/src/main/java/net/pokeranalytics/android/ui/activity/ComparisonReportActivity.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/ui/activity/ProgressReportActivity.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/ui/activity/TableReportActivity.kt
  4. 2
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/PokerAnalyticsActivity.kt
  5. 7
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt
  6. 9
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt
  7. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComparisonReportFragment.kt
  8. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt
  9. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/TableReportFragment.kt
  10. 7
      app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ViewModelHolder.kt

@ -20,19 +20,10 @@ class ComparisonReportActivity : ReportActivity() {
private fun initUI() { private fun initUI() {
val fragmentTransaction = supportFragmentManager.beginTransaction() val fragmentTransaction = supportFragmentManager.beginTransaction()
val reportDetailsFragment = ComparisonReportFragment.newInstance(this.viewModelFactory) val reportDetailsFragment = ComparisonReportFragment.newInstance()
fragmentTransaction.add(R.id.reportDetailsContainer, reportDetailsFragment) fragmentTransaction.add(R.id.reportDetailsContainer, reportDetailsFragment)
fragmentTransaction.commit() fragmentTransaction.commit()
//
// parameters?.let {
//
// val report = it.report
// val title = it.title
//
// }
// parameters = null
} }
} }

@ -46,7 +46,7 @@ class ProgressReportActivity : ReportActivity() {
*/ */
private fun initUI() { private fun initUI() {
val progressFragment = ProgressReportFragment.newInstance(this.viewModelFactory) val progressFragment = ProgressReportFragment.newInstance()
val fragmentTransaction = supportFragmentManager.beginTransaction() val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.add(R.id.statisticDetailsContainer, progressFragment) fragmentTransaction.add(R.id.statisticDetailsContainer, progressFragment)
fragmentTransaction.commit() fragmentTransaction.commit()

@ -19,7 +19,7 @@ class TableReportActivity : ReportActivity() {
private fun initUI() { private fun initUI() {
val fragmentTransaction = supportFragmentManager.beginTransaction() val fragmentTransaction = supportFragmentManager.beginTransaction()
val fragment = TableReportFragment.newInstance(this.viewModelFactory) val fragment = TableReportFragment.newInstance()
fragmentTransaction.add(R.id.reportDetailsContainer, fragment) fragmentTransaction.add(R.id.reportDetailsContainer, fragment)
fragmentTransaction.commit() fragmentTransaction.commit()
} }

@ -21,8 +21,6 @@ open class PokerAnalyticsActivity : AppCompatActivity() {
companion object { companion object {
const val PERMISSION_REQUEST_ACCESS_FINE_LOCATION = 1000 const val PERMISSION_REQUEST_ACCESS_FINE_LOCATION = 1000
const val PERMISSION_REQUEST_READ_EXTERNAL_STORAGE = 1001
const val PLAY_SERVICES_RESOLUTION_REQUEST = 2000
} }
private var realm: Realm? = null private var realm: Realm? = null

@ -10,12 +10,13 @@ import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.ui.viewmodel.ReportViewModel import net.pokeranalytics.android.ui.viewmodel.ReportViewModel
import net.pokeranalytics.android.ui.viewmodel.ReportViewModelFactory import net.pokeranalytics.android.ui.viewmodel.ReportViewModelFactory
import net.pokeranalytics.android.ui.viewmodel.ViewModelHolder
class ReportParameters(var report: Report, var title: String, var stat: Stat? = null, var showAggregationChoices: Boolean = true) class ReportParameters(var report: Report, var title: String, var stat: Stat? = null, var showAggregationChoices: Boolean = true)
abstract class ReportActivity : PokerAnalyticsActivity() { abstract class ReportActivity : PokerAnalyticsActivity(), ViewModelHolder {
protected val viewModelFactory: ReportViewModelFactory by lazy { private val viewModelFactory: ReportViewModelFactory by lazy {
ReportViewModel.parameters?.let { ReportViewModel.parameters?.let {
val stat = it.stat ?: it.report.options.stats.first() val stat = it.stat ?: it.report.options.stats.first()
ReportViewModelFactory(it.report, stat, it.title, it.showAggregationChoices) ReportViewModelFactory(it.report, stat, it.title, it.showAggregationChoices)
@ -24,7 +25,7 @@ abstract class ReportActivity : PokerAnalyticsActivity() {
} }
} }
protected val viewModel: ReportViewModel by lazy { override val viewModel: ReportViewModel by lazy {
ViewModelProviders.of(this, viewModelFactory).get(ReportViewModel::class.java) ViewModelProviders.of(this, viewModelFactory).get(ReportViewModel::class.java)
} }

@ -7,7 +7,6 @@ import android.view.inputmethod.InputMethodManager
import android.widget.EditText import android.widget.EditText
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.lifecycle.ViewModelProviders
import net.pokeranalytics.android.calculus.Report import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
@ -16,18 +15,14 @@ import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.realm.ReportSetup import net.pokeranalytics.android.model.realm.ReportSetup
import net.pokeranalytics.android.ui.fragment.data.DataManagerFragment import net.pokeranalytics.android.ui.fragment.data.DataManagerFragment
import net.pokeranalytics.android.ui.viewmodel.ReportViewModel import net.pokeranalytics.android.ui.viewmodel.ReportViewModel
import net.pokeranalytics.android.ui.viewmodel.ReportViewModelFactory import net.pokeranalytics.android.ui.viewmodel.ViewModelHolder
import net.pokeranalytics.android.util.extensions.findById import net.pokeranalytics.android.util.extensions.findById
abstract class AbstractReportFragment : DataManagerFragment() { abstract class AbstractReportFragment : DataManagerFragment() {
protected var viewModelFactory: ReportViewModelFactory? = null
protected val viewModel: ReportViewModel by lazy { protected val viewModel: ReportViewModel by lazy {
this.viewModelFactory?.let { (requireActivity() as ViewModelHolder).viewModel as ReportViewModel
ViewModelProviders.of(requireActivity(), it).get(ReportViewModel::class.java)
} ?: throw PAIllegalStateException("no factory")
} }
val selectedReport: Report val selectedReport: Report

@ -8,15 +8,13 @@ import com.google.android.material.tabs.TabLayout
import kotlinx.android.synthetic.main.fragment_report_details.* import kotlinx.android.synthetic.main.fragment_report_details.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.adapter.ReportPagerAdapter import net.pokeranalytics.android.ui.adapter.ReportPagerAdapter
import net.pokeranalytics.android.ui.viewmodel.ReportViewModelFactory
class ComparisonReportFragment : AbstractReportFragment() { class ComparisonReportFragment : AbstractReportFragment() {
companion object { companion object {
fun newInstance(viewModelFactory: ReportViewModelFactory): ComparisonReportFragment { fun newInstance(): ComparisonReportFragment {
val fragment = ComparisonReportFragment() val fragment = ComparisonReportFragment()
fragment.viewModelFactory = viewModelFactory
val bundle = Bundle() val bundle = Bundle()
fragment.arguments = bundle fragment.arguments = bundle
return fragment return fragment

@ -38,9 +38,8 @@ class ProgressReportFragment : AbstractReportFragment() {
/** /**
* Creates new instance * Creates new instance
*/ */
fun newInstance(viewModelFactory: ReportViewModelFactory): ProgressReportFragment { fun newInstance(): ProgressReportFragment {
val fragment = ProgressReportFragment() val fragment = ProgressReportFragment()
fragment.viewModelFactory = viewModelFactory
val bundle = Bundle() val bundle = Bundle()
fragment.arguments = bundle fragment.arguments = bundle
return fragment return fragment
@ -50,8 +49,6 @@ class ProgressReportFragment : AbstractReportFragment() {
private lateinit var graphFragment: GraphFragment private lateinit var graphFragment: GraphFragment
private var reports: MutableMap<AggregationType, Report> = hashMapOf() private var reports: MutableMap<AggregationType, Report> = hashMapOf()
// private var stat: Stat = Stat.NET_RESULT
// private var displayAggregationChoices: Boolean = true
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState) super.onCreateView(inflater, container, savedInstanceState)

@ -5,7 +5,6 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.viewmodel.ReportViewModelFactory
class TableReportFragment : AbstractReportFragment() { class TableReportFragment : AbstractReportFragment() {
@ -13,11 +12,8 @@ class TableReportFragment : AbstractReportFragment() {
companion object { companion object {
fun newInstance(viewModelFactory: ReportViewModelFactory): TableReportFragment { fun newInstance(): TableReportFragment {
val fragment = TableReportFragment() val fragment = TableReportFragment()
fragment.viewModelFactory = viewModelFactory
// fragment.reportTitle = title
// fragment.setReport(report)
val bundle = Bundle() val bundle = Bundle()
fragment.arguments = bundle fragment.arguments = bundle
return fragment return fragment

@ -0,0 +1,7 @@
package net.pokeranalytics.android.ui.viewmodel
import androidx.lifecycle.ViewModel
interface ViewModelHolder {
val viewModel: ViewModel
}
Loading…
Cancel
Save