Ensure keyboard is closed when navigating between fragments

This commit is contained in:
Sylvain Berfini 2020-04-02 16:52:58 +02:00
parent e96d073ff0
commit 2dfbdd8958

View file

@ -19,14 +19,19 @@
*/ */
package org.linphone.activities.main package org.linphone.activities.main
import android.app.Activity
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.os.Parcelable import android.os.Parcelable
import android.view.Gravity import android.view.Gravity
import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.NavController
import androidx.navigation.NavDestination
import androidx.navigation.findNavController import androidx.navigation.findNavController
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import java.io.UnsupportedEncodingException import java.io.UnsupportedEncodingException
@ -46,7 +51,7 @@ import org.linphone.databinding.MainActivityBinding
import org.linphone.utils.AppUtils import org.linphone.utils.AppUtils
import org.linphone.utils.FileUtils import org.linphone.utils.FileUtils
class MainActivity : GenericActivity(), SnackBarActivity { class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestinationChangedListener {
private lateinit var binding: MainActivityBinding private lateinit var binding: MainActivityBinding
private lateinit var sharedViewModel: SharedMainViewModel private lateinit var sharedViewModel: SharedMainViewModel
@ -114,6 +119,29 @@ class MainActivity : GenericActivity(), SnackBarActivity {
Snackbar.make(binding.coordinator, resourceId, Snackbar.LENGTH_LONG).show() Snackbar.make(binding.coordinator, resourceId, Snackbar.LENGTH_LONG).show()
} }
override fun onPostCreate(savedInstanceState: Bundle?) {
super.onPostCreate(savedInstanceState)
findNavController(R.id.nav_host_fragment).addOnDestinationChangedListener(this)
}
override fun onDestroy() {
findNavController(R.id.nav_host_fragment).removeOnDestinationChangedListener(this)
super.onDestroy()
}
override fun onDestinationChanged(
controller: NavController,
destination: NavDestination,
arguments: Bundle?
) {
currentFocus?.hideKeyboard()
}
private fun View.hideKeyboard() {
val imm = context.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(windowToken, 0)
}
private fun handleIntentParams(intent: Intent) { private fun handleIntentParams(intent: Intent) {
when (intent.action) { when (intent.action) {
Intent.ACTION_SEND -> { Intent.ACTION_SEND -> {