我需要帮助了解如何在不同的EditText视图之间完成数学运算。我不是要求别人给我写代码,但可能会解释完成这项工作所涉及的内容。
我想张贴这张照片,但作为新用户我不能。基本上我有一个EditText用于以下内容:宽度,长度,屋檐高度,间距。
我有所有TextViews的ID我不知道如何编程后台数学所涉及的工作。我确实需要执行数学运算所需的公式,不知道将它们放在java中的位置和方式。
基本上我需要用户在前4个框中输入一个数字。我需要使用一个等式来生成将在“SQFT”框中显示的答案。用户还将在成本框中输入一个数字,该数字框将生成需要在单独的TextView中显示的“总计”。
任何帮助都会受到赞赏,即使它是指向我的教程方向让我开始。谢谢你的帮助。
只是为了展示我需要使用什么类型的数学,下面是我用于excel计算的等式。
(length+width)*(Eave+1)*2 + (((width/2)/12*Pitch)*(width/2)*2)
答案 0 :(得分:1)
我不确定您是否不知道如何提取在EditTexts中输入的数字,如何实际进行数学计算,如何让用户启动计算或如何呈现它。
我创建了一个包含2个EditTexts的小型演示,以及一个显示输入数字总和的TextView。用户不需要按任何按钮来执行计算,每次用户更新文本时都会自动执行(我认为这是你想要的)。
请注意这段代码不是很好的代码,它使用了许多内部匿名类等,但它应该展示如何执行此操作的机制。
这是 main.xml 布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/a"
android:hint="input a"
android:inputType="number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:minWidth="60dp"/>
<EditText
android:id="@+id/b"
android:hint="input b"
android:inputType="number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:minWidth="60dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="a+b = " />
<TextView
android:id="@+id/total"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp" />
</LinearLayout>
这是示例活动:
package com.example;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
public class SumActivity extends Activity
{
private int a;
private int b;
private TextView totalOutput;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText inputA = (EditText) findViewById(R.id.a);
EditText inputB = (EditText) findViewById(R.id.b);
totalOutput = (TextView) findViewById(R.id.total);
inputA.addTextChangedListener(new TextChangedListener()
{
@Override
public void numberEntered(int number)
{
a = number;
updateTotal();
}
});
inputB.addTextChangedListener(new TextChangedListener()
{
@Override
public void numberEntered(int number)
{
b = number;
updateTotal();
}
});
}
private void updateTotal()
{
int total = a + b; // This is where you apply your function
totalOutput.setText("" + total); // need to do that otherwise int will
// be treated as res id.
}
private abstract class TextChangedListener implements TextWatcher
{
public abstract void numberEntered(int number);
@Override
public void afterTextChanged(Editable s)
{
String text = s.toString();
try
{
int parsedInt = Integer.parseInt(text);
numberEntered(parsedInt);
} catch (NumberFormatException e)
{
Log.w(getPackageName(), "Could not parse '" + text + "' as a number", e);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
}
}
}