2012-02-22 2 views
1

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

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

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

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

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

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

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

Нет downvote. С вашего вопроса кажется, что вы новичок в программировании (или, возможно, в разработке Java/Android). Поэтому здесь все не может объяснить. Вы должны прочитать [официальные документы Android] (http://developer.android.com) и/или [Java docs] (http://docs.oracle.com/javase/tutorial/getStarted/index.html). И, пожалуйста, прочитайте [Часто задаваемые вопросы по StackOverflow] (http://stackoverflow.com/faq). – Mudassir

+0

Спасибо, я посмотрел на андроидные документы снова и снова. Я не хотел, чтобы все объяснялось. Все, что я хотел, было направлено на то, чтобы начать меня. Я признаю, что я начинаю с Android, и я честно не знал, что новички не могут публиковать вопросы. Извините, что, хотя это были не все новички на каком-то pont? – user1224807

+0

Начинающий может задавать вопросы здесь. Но убедитесь, что ваш вопрос связан с конкретной проблемой программирования, а не с каким-то учебным пособием или практическим заданием. Если вы не знаете об Android, обратитесь к учебнику [Hello World.] (Http://developer.android.com/resources/tutorials/hello-world.html). Android очень легко узнать, если вы уже знаете Java. Если вы застряли где-нибудь, поставьте свою проблему здесь, тогда сообщество обязательно поможет вам. – Mudassir

ответ

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) 
     { 
     } 
    } 

} 
+0

Саввас, спасибо. Это огромная помощь. Я буду работать над этим и посмотреть, что я придумал. – user1224807

+0

ОК, как вы, наверное, уже знаете, это сработало отлично. Я сделал образец программы и добавил еще два блока EditText. Я изменил математическую формулу, и она отлично работала. Теперь мне просто нужно использовать это в своем фактическом проекте. Для этого нужно управлять представлениями EditText на разных макетах, чем основной макет. На моем основном макете у меня есть кнопка, которую пользователь нажимает и переносит на этот макет. Где в java-коде я помещаю этот новый код. Должно ли быть ниже всего, что уже есть, и начать новый публичный класс? Надеюсь, этот вопрос имеет смысл. В очередной раз благодарим за помощь. – user1224807

+0

, если вы хотите получить лучшее представление о том, о чем я говорю, вы можете проверить ссылку ... вот где я начал, прежде чем публиковать в stackoverflow. [link] (http://www.tnbforum.com/viewtopic.php?f=150&t=20834&p=125833#p125833) – user1224807