【问题标题】:How can I create a function in separate class and call it from MainActivity如何在单独的类中创建一个函数并从 MainActivity 调用它
【发布时间】:2022-01-19 17:49:36
【问题描述】:

我有一个功能:

fun showDialogWindow(){
val builder = AlertDialog.Builder(this)
val inflater = layoutInflater
val dialogLayout = inflater.inflate(R.layout.dialog_window, null)
val editText = dialogLayout.findViewById<EditText>(R.id.change_balance_edittext)

with(builder) {
    setPositiveButton("Ok"){dialog, which ->
        Values.balance = editText.text.toString().toFloat()
    }
    setNegativeButton("Cancel"){dialog, which ->
    }
    setView(dialogLayout)
    show()
}
}

我想在单独的类中创建它,当我尝试这样做时,我有一些错误:在第 2 行 'this' 未在此上下文中定义,在第 3 行 未解决的参考:layoutInflater 和第 13 行 重载分辨率歧义。在 MainActivity 中,乐趣正在发挥作用。我该如何解决?

【问题讨论】:

    标签: android android-studio kotlin android-activity


    【解决方案1】:

    首先,我将尝试了解该语言的工作原理以及您可以在哪里调用变量。

    例如,“this”错误是因为当您在 MainActivity 中调用“this”时,它会获取活动类型,可能是“AppCompatActivity”。在新文件中调用时,您需要将值“this”作为函数中的参数传递。

    fun showDialogWindow(mainActivity : Context){
    val builder = AlertDialog.Builder(mainActivity )
    val inflater = layoutInflater
    val dialogLayout = inflater.inflate(R.layout.dialog_window, null)
    val editText = dialogLayout.findViewById<EditText>(R.id.change_balance_edittext)
    
        with(builder) {
            setPositiveButton("Ok"){dialog, which ->
                Values.balance = editText.text.toString().toFloat()
        }
        setNegativeButton("Cancel"){dialog, which ->
        }
        setView(dialogLayout)
        show()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多