нужна помощь в программировании математики между editText - PullRequest
1 голос
/ 22 февраля 2012

Мне нужна помощь, чтобы понять, как выполнить математику между различными представлениями EditText. Я не прошу кого-то написать мне код, но, возможно, объяснить, что нужно сделать, чтобы сделать это.

Я хотел опубликовать фотографию этого, но как новый пользователь я не могу. В основном у меня есть EditText для следующих параметров: ширина, длина, высота карниза, высота тона.

У меня есть идентификаторы для всех TextViews. Я просто не знаю, как запрограммировать закулисную математику, чтобы они работали. У меня есть уравнения, необходимые для выполнения математики, но я не уверен, где и как их поместить в Java.

В основном мне нужно, чтобы пользователь вводил число в каждое из 4 верхних полей. Мне нужно использовать уравнение для генерации ответа, который будет отображаться в поле «SQFT». Пользователь также вводит число в поле стоимости, которое генерирует «Итог», который должен отображаться в отдельном TextView.

Любая помощь будет признательна, даже если она направит меня в направлении учебника, чтобы начать меня. Спасибо за вашу помощь.

Чтобы показать, какой тип математики мне нужно использовать, ниже приведено уравнение, которое я использую для вычисления Excel.

(length+width)*(Eave+1)*2 + (((width/2)/12*Pitch)*(width/2)*2)

1 Ответ

1 голос
/ 23 февраля 2012

Я не уверен, если вы не знаете, как извлечь числа, введенные в 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)
        {
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...