diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c97f5a4..4ddbddb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,7 +12,6 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
-
@@ -21,6 +20,10 @@
+
+
+
+
diff --git a/app/src/main/java/keijumt/devandroid/activity/AsyncActivity.kt b/app/src/main/java/keijumt/devandroid/activity/AsyncActivity.kt
new file mode 100644
index 0000000..1a55469
--- /dev/null
+++ b/app/src/main/java/keijumt/devandroid/activity/AsyncActivity.kt
@@ -0,0 +1,12 @@
+package keijumt.devandroid.activity
+
+import android.os.Bundle
+import keijumt.devandroid.R
+
+class AsyncActivity : BaseActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_async)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/keijumt/devandroid/di/module/ActivityModule.kt b/app/src/main/java/keijumt/devandroid/di/module/ActivityModule.kt
index 88c5b17..535b0cb 100644
--- a/app/src/main/java/keijumt/devandroid/di/module/ActivityModule.kt
+++ b/app/src/main/java/keijumt/devandroid/di/module/ActivityModule.kt
@@ -3,6 +3,7 @@
import dagger.Module
import dagger.android.ContributesAndroidInjector
import keijumt.devandroid.activity.ApiActivity
+import keijumt.devandroid.activity.AsyncActivity
import keijumt.devandroid.activity.MainActivity
/**
@@ -17,4 +18,6 @@
@ContributesAndroidInjector(modules = arrayOf(FragmentModule::class))
internal abstract fun apiActivity(): ApiActivity
+ @ContributesAndroidInjector(modules = arrayOf(FragmentModule::class))
+ internal abstract fun asyncActivity(): AsyncActivity
}
\ No newline at end of file
diff --git a/app/src/main/java/keijumt/devandroid/di/module/FragmentModule.kt b/app/src/main/java/keijumt/devandroid/di/module/FragmentModule.kt
index fd01ee7..0fca028 100644
--- a/app/src/main/java/keijumt/devandroid/di/module/FragmentModule.kt
+++ b/app/src/main/java/keijumt/devandroid/di/module/FragmentModule.kt
@@ -3,6 +3,7 @@
import dagger.Module
import dagger.android.ContributesAndroidInjector
import keijumt.devandroid.fragment.ApiFragment
+import keijumt.devandroid.fragment.AsyncFragment
import keijumt.devandroid.fragment.MainFragment
/**
@@ -16,4 +17,7 @@
@ContributesAndroidInjector
internal abstract fun apiFragment(): ApiFragment
+
+ @ContributesAndroidInjector
+ internal abstract fun asyncFragment(): AsyncFragment
}
\ No newline at end of file
diff --git a/app/src/main/java/keijumt/devandroid/di/module/ViewModelModule.kt b/app/src/main/java/keijumt/devandroid/di/module/ViewModelModule.kt
index 41c17ee..b3dc8a8 100644
--- a/app/src/main/java/keijumt/devandroid/di/module/ViewModelModule.kt
+++ b/app/src/main/java/keijumt/devandroid/di/module/ViewModelModule.kt
@@ -7,6 +7,7 @@
import dagger.Module
import dagger.multibindings.IntoMap
import keijumt.devandroid.viewmodel.ApiViewModel
+import keijumt.devandroid.viewmodel.AsyncViewModel
import keijumt.devandroid.viewmodel.MainViewModel
import keijumt.devandroid.viewmodel.ViewModelFactory
import kotlin.reflect.KClass
@@ -34,6 +35,11 @@
abstract fun bindApiViewModel(viewModel: ApiViewModel): ViewModel
@Binds
+ @IntoMap
+ @ViewModelKey(AsyncViewModel::class)
+ abstract fun bindAsyncViewModel(viewModel: AsyncViewModel): ViewModel
+
+ @Binds
abstract fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory
}
\ No newline at end of file
diff --git a/app/src/main/java/keijumt/devandroid/fragment/AsyncFragment.kt b/app/src/main/java/keijumt/devandroid/fragment/AsyncFragment.kt
new file mode 100644
index 0000000..18e24f0
--- /dev/null
+++ b/app/src/main/java/keijumt/devandroid/fragment/AsyncFragment.kt
@@ -0,0 +1,30 @@
+package keijumt.devandroid.fragment
+
+import android.arch.lifecycle.ViewModelProviders
+import android.databinding.DataBindingUtil
+import android.os.Bundle
+import android.support.v4.app.FragmentActivity
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import keijumt.devandroid.R
+import keijumt.devandroid.databinding.FragmentAsyncBinding
+import keijumt.devandroid.viewmodel.AsyncViewModel
+
+class AsyncFragment : BaseFragment() {
+
+ lateinit var binding: FragmentAsyncBinding
+ lateinit var asyncViewModel: AsyncViewModel
+
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?): View? {
+ val nonNullActivity: FragmentActivity = activity ?: return null
+ binding = DataBindingUtil.inflate(inflater, R.layout.fragment_async, null, false)
+ asyncViewModel = ViewModelProviders.of(nonNullActivity, viewModelFactory).get(AsyncViewModel::class.java)
+ binding.asyncViewModel = asyncViewModel
+ return binding.root
+ }
+
+
+}
diff --git a/app/src/main/java/keijumt/devandroid/fragment/MainFragment.kt b/app/src/main/java/keijumt/devandroid/fragment/MainFragment.kt
index 716a0cc..3b16dd1 100644
--- a/app/src/main/java/keijumt/devandroid/fragment/MainFragment.kt
+++ b/app/src/main/java/keijumt/devandroid/fragment/MainFragment.kt
@@ -11,6 +11,7 @@
import android.view.ViewGroup
import keijumt.devandroid.R
import keijumt.devandroid.activity.ApiActivity
+import keijumt.devandroid.activity.AsyncActivity
import keijumt.devandroid.databinding.FragmentMainBinding
import keijumt.devandroid.viewmodel.MainViewModel
@@ -34,6 +35,7 @@
mainViewModel.event.observe(this, Observer {
when (it) {
MainViewModel.Event.Api -> startActivity(Intent(activity, ApiActivity::class.java))
+ MainViewModel.Event.Async -> startActivity(Intent(activity, AsyncActivity::class.java))
}
})
}
diff --git a/app/src/main/java/keijumt/devandroid/viewmodel/AsyncViewModel.kt b/app/src/main/java/keijumt/devandroid/viewmodel/AsyncViewModel.kt
new file mode 100644
index 0000000..f55213c
--- /dev/null
+++ b/app/src/main/java/keijumt/devandroid/viewmodel/AsyncViewModel.kt
@@ -0,0 +1,7 @@
+package keijumt.devandroid.viewmodel
+
+import javax.inject.Inject
+
+class AsyncViewModel @Inject constructor() : BaseViewModel() {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/keijumt/devandroid/viewmodel/MainViewModel.kt b/app/src/main/java/keijumt/devandroid/viewmodel/MainViewModel.kt
index ba37cf5..b766904 100644
--- a/app/src/main/java/keijumt/devandroid/viewmodel/MainViewModel.kt
+++ b/app/src/main/java/keijumt/devandroid/viewmodel/MainViewModel.kt
@@ -8,10 +8,15 @@
val event = SingleLiveEvent()
enum class Event {
- Api
+ Api,
+ Async
}
fun startApi() {
event.value = Event.Api
}
+
+ fun startAsync() {
+ event.value = Event.Async
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_async.xml b/app/src/main/res/layout/activity_async.xml
new file mode 100644
index 0000000..d8fb324
--- /dev/null
+++ b/app/src/main/res/layout/activity_async.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_async.xml b/app/src/main/res/layout/fragment_async.xml
new file mode 100644
index 0000000..7a39090
--- /dev/null
+++ b/app/src/main/res/layout/fragment_async.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml
index e50ee8b..2936d35 100644
--- a/app/src/main/res/layout/fragment_main.xml
+++ b/app/src/main/res/layout/fragment_main.xml
@@ -21,5 +21,14 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+
+
\ No newline at end of file