如何通过EditText对以编程方式创建的输入执行算术运算?

时间:2017-06-11 20:44:04

标签: java android

我在MainActivity.Java中使用for循环而不是在activity_main.Xml中创建了EditText textView按钮。
我想通过EditText对输入的数字进行算术运算。

这是我的代码:

公共类MainActivity扩展AppCompatActivity实现View.OnClickListener {     private static final int MY_BUTTON = 9000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   setContentView(layout.activity_main);

   final LinearLayout my_root = (LinearLayout)findViewById(id.Root);

    for(int i =1;i<=5;i++){


        LinearLayout layout = new LinearLayout(MainActivity.this);
        layout.setOrientation(LinearLayout.HORIZONTAL);
        LinearLayout.LayoutParams ParamLayout =
                new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.WRAP_CONTENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);

        ParamLayout.gravity=Gravity.CENTER;

        layout.setLayoutParams(ParamLayout);

        TextView tvi = new TextView(MainActivity.this);
        tvi.setText("Sub " + String.valueOf(i));
        tvi.setId(i);
        tvi.setLayoutParams(new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT));
        tvi.setTextSize(24);
        tvi.setPadding(0,0,5,3);
        tvi.setMinWidth(300);
        tvi.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD),Typeface.ITALIC);



        layout.addView(tvi,0);

        EditText etCrediti = new EditText(this);
        etCrediti.setHint("Credit ");
        etCrediti.setMinWidth(300);
        etCrediti.setId(50+i);
        etCrediti.setMinLines(1);
        etCrediti.setMaxLines(1);
        layout.addView(etCrediti);

        EditText etPointsi = new EditText(this);
        etPointsi.setText(" ");
        etPointsi.setMinWidth(300);
        etPointsi.setId(100+i);
        etPointsi.setMinLines(1);
        etPointsi.setMaxLines(1);
        layout.addView(etPointsi);

        my_root.addView(layout);


    }

    Button btn = new Button(this);
    btn.setText("Submit");
    btn.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
  // b.setId(MY_BUTTON);
    //btn.setOnClickListener(this);
    btn.setGravity(Gravity.CENTER);
    btn.setTextSize(24);
    btn.setWidth(300);
    btn.setId(MY_BUTTON);
    btn.setOnClickListener(this);
    my_root.addView(btn);





}

2 个答案:

答案 0 :(得分:0)

我猜你想做的是一个计算器...... 你必须拥有这两个editTexts和一个按钮。 您还应该为结果使用另一个TextView。 您需要将单击按钮设置为计算函数。

在你的创建集b1和b2到视图editText。 b1 =(EditText)findViewById(R.id.editText1);

然后获取文本值: int n1 = Integer.pharseInt(b1.getText.toString());

然后只需执行calc并设置TextView文本的结果。 findViewById(R.id.textView1).setText(result);

我还添加了以下教程的链接:

https://www.google.co.il/amp/www.androidauthority.com/build-a-calculator-app-721910/amp/

答案 1 :(得分:0)

根据我在Android中使用EditText的经验,我不得不将数字字符串转换为可以用Java计算的不同类型。

当你期待一个&#39; double&#39;您可以使用以下Java代码段:

EditText myNumericTextfield = ...
...
// fill value of myNumericTextfield
...
double valueOfMyNumericTextfield = 0.0;
try {
   valueOfMyNumericTextfield = Double.parseDouble(myNumericTextfield.toString());
} catch (NumberFormatException e) {
   System.err.println(e);
   throw new Exception(e);
}
...

您还可以将字符串myNumericTextfield转换为intlong