diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ff7882..c97f5a4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ - + android:theme="@style/AppTheme" + tools:ignore="GoogleAppIndexingWarning"> + + + diff --git a/app/src/main/java/keijumt/devandroid/activity/MainActivity.kt b/app/src/main/java/keijumt/devandroid/activity/MainActivity.kt new file mode 100644 index 0000000..97fdcf6 --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/activity/MainActivity.kt @@ -0,0 +1,12 @@ +package keijumt.devandroid.activity + +import android.os.Bundle +import keijumt.devandroid.R + +class MainActivity : BaseActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + } +} \ 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 428579f..88c5b17 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.MainActivity /** * Module: Activity 定義 @@ -11,6 +12,9 @@ internal abstract class ActivityModule { @ContributesAndroidInjector(modules = arrayOf(FragmentModule::class)) + internal abstract fun mainActivity(): MainActivity + + @ContributesAndroidInjector(modules = arrayOf(FragmentModule::class)) internal abstract fun apiActivity(): ApiActivity } \ 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 ae8e328..fd01ee7 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.MainFragment /** * Module: Fragment 定義 @@ -11,6 +12,8 @@ internal abstract class FragmentModule { @ContributesAndroidInjector - internal abstract fun apiFragment(): ApiFragment + internal abstract fun mainFragment(): MainFragment + @ContributesAndroidInjector + internal abstract fun apiFragment(): ApiFragment } \ 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 63144ad..41c17ee 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.MainViewModel import keijumt.devandroid.viewmodel.ViewModelFactory import kotlin.reflect.KClass @@ -24,6 +25,11 @@ @Binds @IntoMap + @ViewModelKey(MainViewModel::class) + abstract fun bindMainViewModel(viewModel: MainViewModel): ViewModel + + @Binds + @IntoMap @ViewModelKey(ApiViewModel::class) abstract fun bindApiViewModel(viewModel: ApiViewModel): ViewModel diff --git a/app/src/main/java/keijumt/devandroid/fragment/MainFragment.kt b/app/src/main/java/keijumt/devandroid/fragment/MainFragment.kt new file mode 100644 index 0000000..716a0cc --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/fragment/MainFragment.kt @@ -0,0 +1,40 @@ +package keijumt.devandroid.fragment + +import android.arch.lifecycle.Observer +import android.arch.lifecycle.ViewModelProviders +import android.content.Intent +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.activity.ApiActivity +import keijumt.devandroid.databinding.FragmentMainBinding +import keijumt.devandroid.viewmodel.MainViewModel + +class MainFragment : BaseFragment() { + + lateinit var binding: FragmentMainBinding + lateinit var mainViewModel: MainViewModel + + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + val nonNullActivity: FragmentActivity = activity ?: return null + binding = DataBindingUtil.inflate(inflater, R.layout.fragment_main, null, false) + mainViewModel = ViewModelProviders.of(nonNullActivity, viewModelFactory).get(MainViewModel::class.java) + binding.mainViewModel = mainViewModel + subscribe() + return binding.root + } + + fun subscribe() { + mainViewModel.event.observe(this, Observer { + when (it) { + MainViewModel.Event.Api -> startActivity(Intent(activity, ApiActivity::class.java)) + } + }) + } +} diff --git a/app/src/main/java/keijumt/devandroid/viewmodel/MainViewModel.kt b/app/src/main/java/keijumt/devandroid/viewmodel/MainViewModel.kt new file mode 100644 index 0000000..ba37cf5 --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/viewmodel/MainViewModel.kt @@ -0,0 +1,17 @@ +package keijumt.devandroid.viewmodel + +import keijumt.devandroid.databinding.SingleLiveEvent +import javax.inject.Inject + +class MainViewModel @Inject constructor() : BaseViewModel() { + + val event = SingleLiveEvent() + + enum class Event { + Api + } + + fun startApi() { + event.value = Event.Api + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..83ec583 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,12 @@ + + + + + + \ 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 new file mode 100644 index 0000000..e50ee8b --- /dev/null +++ b/app/src/main/res/layout/fragment_main.xml @@ -0,0 +1,25 @@ + + + + + + + + + + +