【问题标题】:Can't get result from three EditText's?无法从三个 EditText 获得结果?
【发布时间】:2011-10-21 02:48:39
【问题描述】:

我试图从用户填写的三个 EditText 框中获取数字,然后通过一些简单的数学运算和用户按下按钮,需要通过 textView 得到答案。此外,每当我在模拟器上启动此应用程序时,它都会说,一旦我单击按钮转到此布局和代码,它就需要强制关闭。代码如下:

                 package com.app.one;

import com.app.one.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class monthlyp extends Activity {
int x = 10;
int y= 10;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.monthlyp);

      final TextView input = (TextView) findViewById(R.id.editone);           
      final Button btn = (Button) findViewById(R.id.equals);
      final EditText textView13 = (EditText) findViewById(R.id.textView13); 

      btn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {


            y = Integer.parseInt(input.getText().toString());
            textView13.setText(String.valueOf(y));
        }
      });       
}
    }

我知道它只有一个 EditText 区域,但那是因为我需要帮助再添加两个并且能够将它们用作整数来加/减/除/乘。 xml 包含所有三个编辑文本框和一个等号按钮,可以解决输入的内容。感谢您的帮助,如果您需要更多信息,请询问我。

【问题讨论】:

  • 能否为您的错误提供Logcat?
  • 问题是我保存并启动它时没有任何错误。它只是在此屏幕/文件上崩溃。在仍然有一个等于按钮来组合所有 EditText 的同时添加另外两个 EditText 所需的代码是什么?谢谢!

标签: java android integer textview android-edittext


【解决方案1】:

首先,您的输入似乎是一个 TextView,而您的输出是一个 EditText。这似乎倒退了。如果您的 XML 是正确的并且您的输入是 EditText,那么您在尝试将其转换为 TextView 时可能会遇到问题。

【讨论】:

  • 好的,我切换了它们,但我不确定如何添加更多的 EditText,但仍然将它们全部连接到一个按钮,这样它就可以解决输入的内容。谢谢
【解决方案2】:

马上做两件事:

  1. 您将字符串转换为整数,然后再次转换回整数以将其放入另一个字段。这很糟糕,它被称为溜溜球代码。保存字符串值并将其存储起来。

  2. 如果您没有在 EditText 中输入有效整数,Integer.parseInt() 可能会引发 NumberFormatException。您需要针对该异常尝试/捕获它并处理无效的情况,最好通过在您的编辑文本上调用 setError()。

http://developer.android.com/reference/java/lang/Integer.html#parseInt%28java.lang.String%29

编辑:是的,就像其他人说的那样.. 不要将您的 EditText 命名为“textView13”

【讨论】:

    【解决方案3】:

    你说输入是一个文本视图

    final TextView input = (TextView) findViewById(R.id.editone);    
    

    然后你得到了那个文本视图的整数值

    y = Integer.parseInt(input.getText().toString());
    

    我认为这不是你想要的

    【讨论】:

    • 是的,我切换了这些,现在我将如何添加更多文本框并让每个文本框将输入的内容转换为最适合计算的整数或字符串,然后发布最终答案用户,可能是 textView 的形式,但我不确定。非常感谢
    • 在您的布局中,您可以定义更多的编辑文本框,然后在您的点击按钮中,您可以在尝试从所有这些框中获取数据进行计算时使用
    • 我应该这样做:final EditText input = (EditText) findViewById(R.id.editone);最后的 EditText input2 = (EditText) findViewById(R.id.edittwo);那么我将使用什么代码来获取输入的内容,然后在按下等号按钮后执行 editone x edittwo 或其他操作?
    • 你有正确的想法 y = ... blah blah 现在从 edittext 2 获取 y2 并说 x = y* y2;并将其设置为 textview 文本
    【解决方案4】:

    您似乎从 TextView 获取输入并将输出发布到 EditText。不应该反过来吗?

    【讨论】:

    • 啊...@Pyrondante 打败了我。
    猜你喜欢
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多