From 10f15045c029b2130a7e7df3021ee74582d46d3c Mon Sep 17 00:00:00 2001 From: mkw8263 Date: Mon, 25 Mar 2019 22:16:20 +0900 Subject: [PATCH] BaseActivity create and apply --- .../com/andremion/theatre/BaseActivity.kt | 15 +++++++++++++++ .../theatre/event/detail/EventActivity.kt | 18 +++++++----------- .../andremion/theatre/home/HomeActivity.kt | 19 +++++++++---------- 3 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 presentation/src/main/kotlin/com/andremion/theatre/BaseActivity.kt diff --git a/presentation/src/main/kotlin/com/andremion/theatre/BaseActivity.kt b/presentation/src/main/kotlin/com/andremion/theatre/BaseActivity.kt new file mode 100644 index 0000000..d9ec505 --- /dev/null +++ b/presentation/src/main/kotlin/com/andremion/theatre/BaseActivity.kt @@ -0,0 +1,15 @@ +package com.andremion.theatre + +import android.databinding.DataBindingUtil +import android.databinding.ViewDataBinding +import android.os.Bundle +import dagger.android.support.DaggerAppCompatActivity + +abstract class BaseActivity : DaggerAppCompatActivity() { + lateinit var viewDataBinding: T + abstract val layoutResourceId: Int + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + viewDataBinding = DataBindingUtil.setContentView(this, layoutResourceId) + } +} \ No newline at end of file diff --git a/presentation/src/main/kotlin/com/andremion/theatre/event/detail/EventActivity.kt b/presentation/src/main/kotlin/com/andremion/theatre/event/detail/EventActivity.kt index 17fbd18..770a241 100644 --- a/presentation/src/main/kotlin/com/andremion/theatre/event/detail/EventActivity.kt +++ b/presentation/src/main/kotlin/com/andremion/theatre/event/detail/EventActivity.kt @@ -19,31 +19,27 @@ package com.andremion.theatre.event.detail import android.arch.lifecycle.ViewModelProvider import android.arch.lifecycle.ViewModelProviders import android.content.Intent -import android.databinding.DataBindingUtil import android.databinding.Observable import android.os.Bundle import android.view.Menu import android.view.ViewGroup import androidx.view.doOnPreDraw +import com.andremion.theatre.BaseActivity import com.andremion.theatre.R import com.andremion.theatre.databinding.ActivityEventBinding import com.andremion.theatre.event.detail.rating.EventRatingViewModel import com.andremion.theatre.internal.util.lazyThreadSafetyNone import com.andremion.theatre.navigation.Navigator -import dagger.android.support.DaggerAppCompatActivity import javax.inject.Inject -class EventActivity : DaggerAppCompatActivity() { - +class EventActivity : BaseActivity() { + override val layoutResourceId: Int + get() = R.layout.activity_event @Inject lateinit var viewModelFactory: ViewModelProvider.Factory @Inject lateinit var navigator: Navigator - private val binder by lazyThreadSafetyNone { - DataBindingUtil.setContentView(this, R.layout.activity_event) - } - private val eventDetailViewModel by lazyThreadSafetyNone { ViewModelProviders.of(this, viewModelFactory).get(EventDetailViewModel::class.java) } @@ -57,11 +53,11 @@ class EventActivity : DaggerAppCompatActivity() { supportPostponeEnterTransition() - setSupportActionBar(binder.toolbar) + setSupportActionBar(viewDataBinding.toolbar) supportActionBar!!.setDisplayHomeAsUpEnabled(true) - binder.eventDetailViewModel = eventDetailViewModel - binder.eventRatingViewModel = eventRatingViewModel + viewDataBinding.eventDetailViewModel = eventDetailViewModel + viewDataBinding.eventRatingViewModel = eventRatingViewModel val event = navigator.getEvent(this) eventDetailViewModel.loadEventDetail(event) diff --git a/presentation/src/main/kotlin/com/andremion/theatre/home/HomeActivity.kt b/presentation/src/main/kotlin/com/andremion/theatre/home/HomeActivity.kt index 5eb9733..bf9dbd2 100644 --- a/presentation/src/main/kotlin/com/andremion/theatre/home/HomeActivity.kt +++ b/presentation/src/main/kotlin/com/andremion/theatre/home/HomeActivity.kt @@ -18,28 +18,27 @@ package com.andremion.theatre.home import android.arch.lifecycle.ViewModelProvider import android.arch.lifecycle.ViewModelProviders -import android.databinding.DataBindingUtil import android.os.Bundle import android.support.design.widget.Snackbar import android.view.Menu import android.view.MenuItem import android.view.View import android.view.View.OnClickListener +import com.andremion.theatre.BaseActivity import com.andremion.theatre.R import com.andremion.theatre.databinding.ActivityHomeBinding import com.andremion.theatre.event.type.EventTypeViewModel import com.andremion.theatre.internal.util.lazyThreadSafetyNone -import dagger.android.support.DaggerAppCompatActivity import javax.inject.Inject -class HomeActivity : DaggerAppCompatActivity(), OnClickListener { +class HomeActivity : BaseActivity(), OnClickListener { + + override val layoutResourceId: Int + get() = R.layout.activity_home @Inject lateinit var viewModelFactory: ViewModelProvider.Factory - private val binder by lazyThreadSafetyNone { - DataBindingUtil.setContentView(this, R.layout.activity_home) - } private val viewModel by lazyThreadSafetyNone { ViewModelProviders.of(this, viewModelFactory).get(EventTypeViewModel::class.java) @@ -48,10 +47,10 @@ class HomeActivity : DaggerAppCompatActivity(), OnClickListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setSupportActionBar(binder.toolbar) + setSupportActionBar(viewDataBinding.toolbar) - binder.viewModel = viewModel - binder.fabClick = this + viewDataBinding.viewModel = viewModel + viewDataBinding.fabClick = this viewModel.loadEventTypeList() } @@ -69,6 +68,6 @@ class HomeActivity : DaggerAppCompatActivity(), OnClickListener { } override fun onClick(v: View?) { - Snackbar.make(binder.root, "Replace with your own action", Snackbar.LENGTH_LONG).show() + Snackbar.make(viewDataBinding.root, "Replace with your own action", Snackbar.LENGTH_LONG).show() } }