Как установить выделенный элемент в диалоге оповещения? - PullRequest
0 голосов
/ 20 сентября 2019

Есть ли способ выделить выделенный элемент в алертилдиалоге?В моем случае я добавил два элемента в alerttdialog, и я хочу установить выделенный элемент как выделенный.Мой нынешний подход заключается в том, что я могу выделить только один элемент, но не интерактив пользователя. Я думаю, что мой alerttdialog не может запомнить выбранный элемент. Вот мой подход-

lateinit var dialog: AlertDialog
    val listItems=arrayOf("English", "Thai")
    var selectedElement= 0

    val builder=AlertDialog.Builder(this)
    builder.setTitle("Choose Language")
    builder.setSingleChoiceItems(listItems,selectedElement,DialogInterface.OnClickListener() { dialogInterface, i ->
                if (i == 0) {
                setLocale("en")
                recreate()

            }

            if (i == 1) {
                        setLocale("th")
                recreate()

            }
            dialogInterface.dismiss()

    })

    dialog= builder.create()
    dialog.show()

1 Ответ

0 голосов
/ 24 сентября 2019

Что ж, после получения большого количества ссылок я наконец-то нашел решение, используя SharedPreferences .Я сохраняю значения для позиции выбранных элементов в SharedPreferences и извлекаю в начале приложения.Используя этот способ, я могу видеть выбранный элемент при следующем запуске приложения.Вот код, который я изменил на -

class MainActivity : AppCompatActivity() {
        var selectedItems= -1

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        loadLoacle()
        loadvalue()
        setContentView(R.layout.activity_main)
}

private fun changeLanguage(){
    lateinit var dialog: AlertDialog
    val listItems=arrayOf("English", "Thai","Myanmar")
    val builder=AlertDialog.Builder(this)
    builder.setTitle("Choose Language")
    builder.setSingleChoiceItems(listItems,selectedItems,DialogInterface.OnClickListener() {dialogInterface,i->
        if (i == 0) {
            setLocale("en")
            recreate()
        }

        if (i == 1) {
            setLocale("th")
            recreate()
        }

        if (i == 2) {
            setLocale("my")
            recreate()
        }
        setvalue(i)
        dialogInterface.dismiss()

    })
    dialog= builder.create()
    dialog.show()

}

private fun setLocale( lang:String) {

    val locale=Locale(lang)
    Locale.setDefault(locale)
    val config=Configuration()
    config.locale=locale
    baseContext.resources.updateConfiguration(config, baseContext.resources.displayMetrics)

    var editor=getSharedPreferences("Settings", MODE_PRIVATE).edit()
    editor.putString("My_Lang", lang)
    editor.apply()

}

private fun loadLoacle(){
    var prefs=getSharedPreferences("Settings", Activity.MODE_PRIVATE)
    val language:String? = prefs.getString("My_Lang","")
    println("RESULT"+language)
    setLocale(language!!)
}

private fun setvalue( v:Int) {

    var editor=getSharedPreferences("Settings", MODE_PRIVATE).edit()
    editor.putInt("value", v)
    editor.apply()

}

private fun loadvalue(){
    var prefs=getSharedPreferences("Settings", Activity.MODE_PRIVATE)
    val language:Int? = prefs.getInt("value",0)
    selectedItems = prefs.getInt("value",0)
    println("RESULT"+language)
    setvalue(language!!)

}
}

Кстати, не стесняйтесь редактировать.СЧАСТЛИВЫЙ КОДИНГ:)

...