【问题标题】:how to get integers from edittext and multiply them using kotlin如何从edittext获取整数并使用kotlin将它们相乘
【发布时间】:2019-07-30 01:34:16
【问题描述】:

我似乎无法弄清楚如何将输入到文本编辑中的值转换为 srting/int,然后将它们相乘。我有 3 个输入,我想与单击按钮相乘,然后显示在文本视图的文本中。 作为一个练习,看看我的按钮是否有效并且更改文本视图是否有效,我使用了 append 并且它有效,我只是无法让它们相乘。

查看其中一些线程,我似乎仍然无法使其工作:

Android - How to get text from edittext and calculate them?

Android - How to get text from edittext and calculate them?

Convert EditText input to integer and multiply?

Koltin 中的片段代码(我需要缺少的)

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.MultiplyExample.*

class MultiplyExample : Fragment() {

override fun onCreateView( inflater: LayoutInflater, container: 
ViewGroup?, savedInstanceState: Bundle? ): View? {

return inflater.inflate(R.layout.fragment_retention, container, false) }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

super.onViewCreated(view, savedInstanceState)

button.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View) {

val a: Int = length.text.toString().toInt()
val b: Int = flight.text.toString().toInt()
val c: Int = rotation.text.toString().toInt()

使用 stringbuilder# 作为 append 工作

val sb = StringBuilder()
sb.append(a).append(b).append(c)
d.text = sb

XML 对于 a,b,c 是一样的

<EditText
        android:inputType="number"

【问题讨论】:

    标签: android android-fragments android-edittext android-7.0-nougat


    【解决方案1】:

    您的问题是您试图在没有findViewById 的情况下引用片段中的小部件。

    在您的方法 onCreateView 中,在 return 语句之前添加一些类似这样的代码。

    val view = inflater.inflate(R.layout.fragment_retention, container, false)
    
    val a: Int = view.findViewById<TextView>(R.id.length).text.toString().toInt()
    val b: Int = view.findViewById<TextView>(R.id.flight).text.toString().toInt()
    val c: Int = view.findViewById<TextView>(R.id.rotation).text.toString().toInt()
    
    val multiplication = a * b * c
    
    return view
    

    【讨论】:

    • 该方法就像一个魅力,但是它们是 字段而不是 但写出完整语句的概念有效。 Android Studio 建议它是我拥有的,所以我认为它很好。感谢您的提醒
    • Android Studio 似乎不知道这些建议在片段中不起作用,这很烦人。我也花了一段时间才弄清楚。
    【解决方案2】:

    在片段中尝试以下代码

     myView= inflater.inflate(R.layout.fragment_blank, container, false)
    
            myView.multiply_btn.setOnClickListener { myView ->
                val number1 =number_et1.text.toString().toInt()
                val number2 = number_et2.text.toString().toInt()
                val number3 = number_et3.text.toString().toInt()
    
                val multiply: Int = number1 * number2 * number3
                answer_tv.text = "Multiply is: " + multiply
            }
            return myView
    

    我希望它对你有用。

    【讨论】:

    • 谢谢,但这实际上是我正在尝试的,你拥有它的方式不会构建,因为它需要 Int 后数字( val number1: Int = ),并且在 Taimoor Ahmad 在他们的建议之后答案,它需要 findViewById 才能找到实际字段而不是小部件。
    【解决方案3】:

    首先使用 toString() 将 textField 数据转换为字符串,然后使用此代码将结果数据转换为整数或双精度:

    btnSecond.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    double num1,num2,res;
                    num1 = Double.valueOf(editFirst.getText().toString());
                    num2 = Double.valueOf(editSecond.getText().toString());
                    res = num1 - num2;
                    result.setText(""+res);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 2020-12-28
      • 2021-04-11
      • 1970-01-01
      相关资源
      最近更新 更多