Нужны некоторые предложения для скрытия кода клавиатуры - PullRequest
0 голосов
/ 28 марта 2019

Я всегда находил одну проблему, когда я делаю формы (например, форму входа или регистрацию) в своих приложениях, эта проблема заключается в скрытии клавиатуры , когда пользователь нажимает кнопку отправки. Для решения этой проблемы я всегда пишу код, скрывающий клавиатуру, в самой 1-й строке прослушивателя щелчков. Это решение было бы хорошо, если в моем приложении только 1 или 2 формы, но если в приложении есть формы сохранения, тогда оно становится определенные накладные расходы на фактическую бизнес-логику приложения. Принимая это во внимание поддержание «видимости клавиатуры» , я разработал общее решение для решения этой проблемы. Я учусь разрабатывать приложение для Android, используя kotlin, и используя «методы по умолчанию» интерфейса kotlin, я разработал этот код.

Я делюсь с вами кодом, и мне нужны ваши предложения и улучшения в этом подходе.

Я хочу знать, смогу ли я использовать этот подход в моих живых проектах или я просто не могу использовать этот подход, потому что это неправильно. Пожалуйста дай мне Ваш ценный отзыв.

MainActivity:

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity(), CustomOnClickListener {

    override fun onClick(v: View?) {
        super<CustomOnClickListener>.onClick(v)
        when(v?.id){
            R.id.button1 -> Toast.makeText(this, "button1 clicked", Toast.LENGTH_LONG).show()
            R.id.button2 -> Toast.makeText(this, "button2 clicked", Toast.LENGTH_LONG).show()
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button1.setOnClickListener(this)
        button2.setOnClickListener(this)
    }
}

CustomOnClickListener

import android.app.Activity
import android.content.Context
import android.view.View
import android.view.inputmethod.InputMethodManager

interface CustomOnClickListener : View.OnClickListener{
    override fun onClick(v: View?) {
        v?.hideKeyboard()
    }
}

fun View.hideKeyboard() {
    val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    imm.hideSoftInputFromWindow(windowToken, 0)
}
...