Урок 19. Пишем простой калькулятор

Обсуждение уроков
=bor=
Сообщения: 267
Зарегистрирован: 21 мар 2013, 12:26

Re: Урок 19. Пишем простой калькулятор

Сообщение =bor= » 09 май 2013, 16:27

Oleg34 писал(а):Блин, правой кнопкой на проекте/Run as/Android Application, тут же выскакивает следующее предупреждение: android library projects cannot be launched, делаю: правой кнопкой на проекте /Properties/ Android /Library/Add, но не получается ничего добавить. Может проще переделать по новому проект?
Ну, правильно, у вас же там файл в формате .jar, вот он и воспринимает его как Library.
Удалите файл .jar и скомпилируйте заново, как я написал выше.

Oleg34
Сообщения: 17
Зарегистрирован: 26 дек 2012, 15:41

Re: Урок 19. Пишем простой калькулятор

Сообщение Oleg34 » 09 май 2013, 17:12

Сделал как Вы сказали, все равно вылезают ошибки. Решил по новому сделать проект. У меня вопрос: при добавлении кода ( банальное copy->paste из интернета) в файл MainActivity.java подсвечиваются красным объекты. Для добавления их в проект я выбираю пункт create field... Я правильно делаю?
Вложения
2.png
2.png (231.03 КБ) 13617 просмотров

=bor=
Сообщения: 267
Зарегистрирован: 21 мар 2013, 12:26

Re: Урок 19. Пишем простой калькулятор

Сообщение =bor= » 09 май 2013, 17:37

Oleg34 писал(а):Сделал как Вы сказали, все равно вылезают ошибки.
Вы удалили calc_oleg.jar, затем перекомпилировали? Что за ошибки?
Попробуйте Proect/Clean.

=bor=
Сообщения: 267
Зарегистрирован: 21 мар 2013, 12:26

Re: Урок 19. Пишем простой калькулятор

Сообщение =bor= » 09 май 2013, 17:43

Oleg34 писал(а):при добавлении кода в файл MainActivity.java подсвечиваются красным объекты. Для добавления их в проект я выбираю пункт create field... Я правильно делаю?
На красноту в данном случае можно внимания не обращать, т.к. у вас, видимо, эти элементы ещё в activity_main.xml не прописаны. Скопируйте текст в activity и .xml и выберите в меню File/Save All, подчёркивание исчезнет.

Oleg34
Сообщения: 17
Зарегистрирован: 26 дек 2012, 15:41

Re: Урок 19. Пишем простой калькулятор

Сообщение Oleg34 » 09 май 2013, 17:53

Сделал Proect/Clean, правой кнопкой на проекте/Run as/Android Application. Вот все равно та же ошибка:
Вложения
4.png
4.png (90.4 КБ) 13612 просмотров

=bor=
Сообщения: 267
Зарегистрирован: 21 мар 2013, 12:26

Re: Урок 19. Пишем простой калькулятор

Сообщение =bor= » 09 май 2013, 18:00

Oleg34 писал(а):Сделал Proect/Clean, правой кнопкой на проекте/Run as/Android Application. Вот все равно та же ошибка:
На вашем скриншоте не развёрнута папка bin, а там, я почти уверен, по-прежнему находится файл .jar.
Его надо удалить.
Сделайте ещё скриншот с развёрнутыми папками bin, libs и Android Depencies.

Oleg34
Сообщения: 17
Зарегистрирован: 26 дек 2012, 15:41

Re: Урок 19. Пишем простой калькулятор

Сообщение Oleg34 » 09 май 2013, 18:04

Вот открыл:
Вложения
5.png
5.png (71.96 КБ) 13609 просмотров

=bor=
Сообщения: 267
Зарегистрирован: 21 мар 2013, 12:26

Re: Урок 19. Пишем простой калькулятор

Сообщение =bor= » 09 май 2013, 18:13

Теперь правой кнопкой на проекте/Run as/Android Application.
Но у вас в activity ошибки.
Убедитесь, что у вас такой код:

Код: Выделить всё

package ru.android.calc_oleg;

import java.util.ArrayList;

import com.example.calc_oleg.R;

import android.os.Bundle;
import android.app.Activity;
import android.text.method.DigitsKeyListener;
//import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

/*public class MainActivity extends Activity {

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

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}*/
public class CalcActivity extends Activity {

    /**Переменная текстбокса*/
    EditText calcDialogDisplay;

    /**Переменные кнопок*/
    TextView binary;
    TextView allClear;
    TextView seven;
    TextView eight;
    TextView nine;
    TextView division;
    TextView four;
    TextView five;
    TextView six;
    TextView multiply;
    TextView one;
    TextView two;
    TextView three;
    TextView subtract;
    TextView decimal;
    TextView zero;
    TextView equals;
    TextView addition;

    /**Результат который заносится в масив для обработки*/
    ArrayList<Float> result = new ArrayList<Float>();

    /**Первое введенное число*/
    float number1;

    /**Второе введенное число*/
    float number2;

    int currentOperation = 0;
    int nextOperation;

    /**Прибавление*/
    final static int ADD = 1;

    /**Вычитание*/
    final static int SUBTRACT = 2;

    /**Умножение*/
    final static int MULTIPLY = 3;

    /**Деление*/
    final static int DIVISION = 4;

    /**Равно*/
    final static int EQUALS = 5;

    /**Нахождение целого значение из двоичного числа*/
    final static int DECIMAL = 6;

    /**Нахождение двоичного числа из целого*/
    final static int BINARY = 7;

    final static int CLEAR = 1;
    final static int DONT_CLEAR = 0;
    int clearCalcDisplay = 0;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        calcDialogDisplay = (EditText) findViewById(R.id.editText1);
        binary = (TextView) findViewById(R.id.button23);
        allClear = (TextView) findViewById(R.id.button22);
        seven = (TextView) findViewById(R.id.button11);
        eight = (TextView) findViewById(R.id.button12);
        nine = (TextView) findViewById(R.id.button13);
        division =(TextView) findViewById(R.id.button9);
        four = (TextView) findViewById(R.id.button6);
        five = (TextView) findViewById(R.id.button7);
        six =(TextView) findViewById(R.id.button8);
        multiply = (TextView) findViewById(R.id.button10);
        one = (TextView) findViewById(R.id.button1);
        two = (TextView) findViewById(R.id.button2);
        three = (TextView) findViewById(R.id.button3);
        subtract = (TextView) findViewById(R.id.button5);
        decimal = (TextView) findViewById(R.id.button16);
        zero = (TextView) findViewById(R.id.button20);
        equals = (TextView) findViewById(R.id.button14);
        //addition = (TextView) findViewById(R.id.addition);
        calcDialogDisplay.setKeyListener(DigitsKeyListener.getInstance(true,true));

        registerListeners();
    }

    /*Обработка нажатия на экран*/
    public void registerListeners () {

        seven.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearCalcDisplay == CLEAR) {
                    calcDialogDisplay.setText("");
                }
                clearCalcDisplay = DONT_CLEAR;
                calcDialogDisplay.append("7");
            }
        });

        eight.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearCalcDisplay == CLEAR) {
                    calcDialogDisplay.setText("");
                }
                clearCalcDisplay = DONT_CLEAR;
                calcDialogDisplay.append("8");

            }
        });

        nine.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (clearCalcDisplay == CLEAR) {
                    calcDialogDisplay.setText("");
                }
                clearCalcDisplay = DONT_CLEAR;
                calcDialogDisplay.append("9");

            }
        });

        division.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                calcLogic(DIVISION);                    
            }
        });

        allClear.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                calcDialogDisplay.setText("");
                number1 = 0;
                number2 = 0;
                result.removeAll(result);
                currentOperation = 0;
                nextOperation = 0;                  
            }
        });

    four.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (clearCalcDisplay == CLEAR) {
                calcDialogDisplay.setText("");
            }
            clearCalcDisplay = DONT_CLEAR;
            calcDialogDisplay.append("4");

        }
    });

    five.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (clearCalcDisplay == CLEAR) {
                calcDialogDisplay.setText("");
            }
            clearCalcDisplay = DONT_CLEAR;
            calcDialogDisplay.append("5");

        }
    });

    six.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (clearCalcDisplay == CLEAR) {
                calcDialogDisplay.setText("");
            }
            clearCalcDisplay = DONT_CLEAR;
            calcDialogDisplay.append("6");
        }
    });

    zero.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (clearCalcDisplay == CLEAR) {
                calcDialogDisplay.setText("");
            }
            clearCalcDisplay = DONT_CLEAR;
            calcDialogDisplay.append("0");
        }
    });

    decimal.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            calcLogic(DECIMAL);
        }
    });

    multiply.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            calcLogic(MULTIPLY);
        }
    });

    one.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (clearCalcDisplay == CLEAR) {
                calcDialogDisplay.setText("");
            }
            clearCalcDisplay = DONT_CLEAR;
            calcDialogDisplay.append("1");

        }
    });

    two.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (clearCalcDisplay == CLEAR) {
                calcDialogDisplay.setText("");
            }
            clearCalcDisplay = DONT_CLEAR;
            calcDialogDisplay.append("2");

        }
    });

    three.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (clearCalcDisplay == CLEAR) {
                calcDialogDisplay.setText("");
            }
            clearCalcDisplay = DONT_CLEAR;
            calcDialogDisplay.append("3");

        }
    });

    subtract.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            calcLogic(SUBTRACT);
        }               
    });

    equals.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            calcLogic(EQUALS);

        }
    });

    binary.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            calcLogic(BINARY);

        }
    });
}

    /*Функция перевода из десятичного в двоичное значение*/
    private float decToBin(float bin) {  
        int i, b;  
        long result = 0;

         for(i=0; bin > 0; i++)  {
            b = (int) (bin % 2);  
            bin = (bin-b)/2;
            result += b * Math.pow(10,i);
        }
         return result;
    }

    /*Функция перевода из двличного в десятичное значение*/
    private float binToDec(float dec) {
        int result = 0;
        int mult = 1;

        while(dec > 0) {
            result += mult * ((int)dec % 10);
            dec /= 10;
            mult *= 2;
        }
        return result;
    }

    /*Функция расчета введенных значений*/
    private void calcLogic(int operator) {

    result.add(Float.parseFloat(calcDialogDisplay.getText().toString()));

    if (operator != EQUALS) {
        nextOperation = operator;
    }else if (operator == EQUALS){
        nextOperation = 0;
    }

    switch (currentOperation) {

    /*Прибавление*/
        case ADD:               
            number1 = result.get(0);
            number2 = result.get(1);

            result.removeAll(result);

            result.add(number1 + number2);

            calcDialogDisplay.setText(String.format("%.0f", result.get(0)));
            break;

      /*Вычитание*/      
        case SUBTRACT:
            number1 = result.get(0);
            number2 = result.get(1);

            result.removeAll(result);

            result.add(number1 - number2);

            calcDialogDisplay.setText(String.format("%.0f", result.get(0)));
            break;

      /*Умножение*/
        case MULTIPLY:
            number1 = result.get(0);
            number2 = result.get(1);

            result.removeAll(result);

            result.add(number1 * number2);

            calcDialogDisplay.setText(String.format("%.0f", result.get(0)));
            break;
       /*Деление*/     
        case DIVISION:
            number1 = result.get(0);
            number2 = result.get(1);

            result.removeAll(result);

            result.add(number1 / number2);

            calcDialogDisplay.setText(String.format("%.0f", result.get(0)));
            break;

        /*Получание двоичного числа*/    
        case DECIMAL:
             number2 = result.get(1);

             result.removeAll(result);

             result.add(decToBin(number2));

             calcDialogDisplay.setText(String.format("%.0f", result.get(0)));
            break;

       /*Получение десятичного числа*/
        case BINARY:
             number2 = result.get(1);

             result.removeAll(result);

             result.add(binToDec(number2));

             calcDialogDisplay.setText(String.format("%.0f", result.get(0)));
            break;
    }

    clearCalcDisplay = CLEAR;
    currentOperation = nextOperation;
    if (operator == EQUALS) {
        number1 = 0;
        number2 = 0;
        result.removeAll(result);
    }
}
}

Oleg34
Сообщения: 17
Зарегистрирован: 26 дек 2012, 15:41

Re: Урок 19. Пишем простой калькулятор

Сообщение Oleg34 » 09 май 2013, 18:29

Я переделал весь проект. Не знаю, что я сделал неправильно в первом случае, но сейчас вроде то же самое делал. И все запустилось. Вот выкладываю скрин и исходник, может кому пригодится! Спасибо огромное =bor=, который со мной целый день мучился!!! Всех Вас с праздником! Еще раз спасибо за помощь =bor=!
Вложения
calc.zip
(938.67 КБ) 316 скачиваний
6.png
6.png (152.46 КБ) 13606 просмотров

=bor=
Сообщения: 267
Зарегистрирован: 21 мар 2013, 12:26

Re: Урок 19. Пишем простой калькулятор

Сообщение =bor= » 09 май 2013, 18:40

Oleg34 писал(а):Спасибо огромное =bor=, который со мной целый день мучился!!! Всех Вас с праздником! Еще раз спасибо за помощь =bor=!
Возможно, это следствие ваших экспериментов по вставке кода из инета. Может, жали на Add Libraries... или Add External Archieves.
Пожалуйста. И вас с праздником. ;)

Аватара пользователя
Bellatrix
Сообщения: 5
Зарегистрирован: 28 мар 2013, 10:43

Re: Урок 19. Пишем простой калькулятор

Сообщение Bellatrix » 22 май 2013, 14:18

Dangreon писал(а):Подобные ошибки возникают из-за особенностей реализации вычислений дробных чисел (чисел с плавающей запятой) на выч. устройствах.
Чтобы это устранить , как один из вариантов, округлять до нужного значения. Либо использовать специально созданные классы для точных вычислений.
Какие есть в Java - не подскажу, но Вы можете поискать.
Нашла специальный класс для дробных вычислений BigDecimal (java.math.BigDecimal), использовала его вместо переменных типа double и теперь все работает, как нужно. И работать с ним мне показалось намного удобнее, чем просто с дробными числами

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 19. Пишем простой калькулятор

Сообщение rezak90 » 22 май 2013, 14:44

Bellatrix писал(а):
Dangreon писал(а):Подобные ошибки возникают из-за особенностей реализации вычислений дробных чисел (чисел с плавающей запятой) на выч. устройствах.
Чтобы это устранить , как один из вариантов, округлять до нужного значения. Либо использовать специально созданные классы для точных вычислений.
Какие есть в Java - не подскажу, но Вы можете поискать.
Нашла специальный класс для дробных вычислений BigDecimal (java.math.BigDecimal), использовала его вместо переменных типа double и теперь все работает, как нужно. И работать с ним мне показалось намного удобнее, чем просто с дробными числами
правильно сделали, так как оракл рекомендует использовать BigDecimal и BigInteger даже в бухгалтерский и экономических расчётах, так как они очень точны и очень велика величина знака после запятой
R.id.team
Политика на форуме запрещена

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 19. Пишем простой калькулятор

Сообщение Mikhail_dev » 22 май 2013, 15:30

Они работают на сколько помню почти на порядок медленней. Так что помните, что хорошо везде сразу не бывает.

Edel_Weiss
Сообщения: 1
Зарегистрирован: 04 июл 2013, 11:29

Re: Урок 19. Пишем простой калькулятор

Сообщение Edel_Weiss » 04 июл 2013, 11:36

Не подскажите, немного решил модернизировать этот калькулятор, чтобы по нажатию "Ввод" на клавиатуре фокус передавался от одного эдиттекста к другому. Нашел метод setOnEditorActionListener, но не получается его применить. В чем может быть проблема?

Код: Выделить всё

 etNum1.setOnEditorActionListener( new OnEditorActionListener() {
	    	public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
	    		if( event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
	    			// обработка нажатия Enter
	    			 etNum2.requestFocus();
	    			return true;
	    		}
	    		return false;
	    	}
	    });	

Black Subject
Сообщения: 1
Зарегистрирован: 06 авг 2013, 06:47

Re: Урок 19. Пишем простой калькулятор

Сообщение Black Subject » 06 авг 2013, 08:08

Добрый день!
Решил написать программу для решения квадратных уравнений.
Фаил equation.xml написал, но с написание Activity_four.java возникли проблемы.
Код equation.xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/background_color"
    android:paddingLeft="20dip"
    android:paddingRight="20dip" >

	<LinearLayout
	    android:id="@+id/equation"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:orientation="horizontal"
	    android:paddingBottom="5dip"
	    android:paddingTop="20dip" >

	    <EditText
	        android:id="@+id/a"
	        android:layout_width="65dip"
	        android:layout_height="wrap_content"
	        android:hint="@string/a"
	        android:inputType="numberSigned"
	        android:textSize="25sp" />

	    <TextView
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="@string/xqudratic_text"
	        android:textColor="@color/equal_text"
	        android:textSize="25sp" />

	    <EditText
	        android:id="@+id/b"
	        android:layout_width="65dip"
	        android:layout_height="wrap_content"
	        android:hint="@string/b"
	        android:inputType="numberSigned"
	        android:textSize="25sp" />

	    <TextView
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="@string/x_text"
	        android:textColor="@color/equal_text"
	        android:textSize="25sp" />

	    <EditText 
	        android:id="@+id/c"
	        android:hint="@string/c"
	        android:inputType="numberSigned"
	        android:layout_width="65dip"
	        android:layout_height="wrap_content"
	        android:textSize="25sp"
	        />

	    <TextView
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="@string/equal_text"
	        android:textColor="@color/equal_text"
	        android:textSize="25sp" />

	</LinearLayout>

    <Button
        android:id="@+id/D"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/equation"
        android:layout_below="@+id/equation"
        android:text="дискриминант" />

    <Button
        android:id="@+id/roots"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/equation"
        android:layout_toRightOf="@+id/D"
        android:text="корни" />

    <Button
        android:id="@+id/solve"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/D"
        android:layout_below="@+id/D"
        android:text="@string/solve_button"
        android:textSize="20sp" />

    <Button
        android:id="@+id/clear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/resultField"
        android:layout_alignRight="@+id/resultField"
        android:layout_below="@+id/solve"
        android:text="очистить"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/resultField"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/solve"
        android:layout_below="@+id/button1"
        android:layout_marginTop="11dp"
        android:paddingTop="18dip"
        android:textColor="@color/equal_text"
        android:textSize="15sp" />
        
</RelativeLayout>
Код Activity_four.java

Код: Выделить всё

package ru.experiment;

import ru.gen.equation.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Activity_four extends Activity
implements View.OnClickListener, View.OnKeyListener
{
	EditText a;
	  EditText b;
	  EditText c;
	  
	  double d;
	  double x1;
	  double x2;
	  Button roots;
	  Button D;
	  Button solve;
	  Button clear;
	  TextView resultField;
String operator = "";
String operator2 = "";

float num1 = 0;
float num2 = 0;

double d3 = 0;
protected void alertBox(String paramString1, String paramString2)
{
  new AlertDialog.Builder(this).setMessage(paramString2).setTitle(paramString1).setCancelable(true).setNeutralButton(17039370, new DialogInterface.OnClickListener()
  {
    public void onClick(DialogInterface paramAnonymousDialogInterface, int paramAnonymousInt)
    {
    }
  }).show();
}




public void onClick(View paramView)
{
	
	  if (TextUtils.isEmpty(a.getText().toString())
		        || TextUtils.isEmpty(b.getText().toString())|| TextUtils.isEmpty(c.getText().toString())) {
		      return;
		    }
	  String num1 = this.a.getText().toString();
  String num2 = this.b.getText().toString();
  String num3 = this.c.getText().toString();
  
  double d1;
  double d2;
    d1 = Double.parseDouble(num1);
    d2 = Double.parseDouble(num2);
    d3 = Double.parseDouble(num3);
  switch (paramView.getId())
  {
 
  case R.id.tvResult:
  default:
    return;
  
  case R.id.D:
	  if(d1!=0){
		   d =  Math.pow(d2, 2) - 4 * d1 * d2;    }
	 
	  else if(d1==0){Activity_four.this.alertBox("Ошибка!", "Параметр a не должен равнятся нулю.");}
    return;
    
  case R.id.roots:
	  if(d1!=0){
	  d =  Math.pow(d2, 2) - 4 * d1 * d2;
	  if (d >= 0) {
			x1 =  ((-d2 + Math.sqrt(d))/2*d1);
			x2 =  ((-d2 - Math.sqrt(d))/2*d1);
		}
	  }
	  else if(d1==0){Activity_four.this.alertBox("Ошибка!", "Параметр a не должен равнятся нулю.");}
   
    
    	 }
   
    
    
    return;
  case R.id.clear:
	  
	    
	    return;
  case R.id.solve:
  }
 


public void onCreate(Bundle paramBundle)
{
  super.onCreate(paramBundle);
  setContentView(R.layout.equation);
  
  this.a = ((EditText)findViewById(R.id.a));
  this.b = ((EditText)findViewById(R.id.b));
  this.b = ((EditText)findViewById(R.id.c));
  
  this.resultField = ((TextView)findViewById(R.id.resultField));
  
  this.D = ((Button)findViewById(R.id.D));
  this.roots = ((Button)findViewById(R.id.roots));
  
  
  this.solve = ((Button)findViewById(R.id.solve));
  this.clear = ((Button)findViewById(R.id.clear));
  
  
  D.setOnClickListener(this);
  roots.setOnClickListener(this);
 
  
  solve.setOnClickListener(this);
  clear.setOnClickListener(this);
  
  a.setOnKeyListener(this);
  b.setOnKeyListener(this);
  c.setOnKeyListener(this);
  
  D.setOnKeyListener(this);
  roots.setOnKeyListener(this);
  
}




@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
	// TODO Автоматически созданная заглушка метода
	return false;
}




}
Помогите пожалуйста, дополнить код Activity, необходимо чтобы:
1) при нажатии на одну из кнопок(D или roots) считал результат но не выводился.
2) при нажатии на кнопку solve полученный результат выводился(в зависимости от того какая кнопка нажата(D или roots)
если D то:"D=(значение дискриминанта)",
если roots то:"x1=(значение первого корня)" и "x2=(значение второго корня)")
3)при нажатии на кнопку clear все поля(a, b, c, resultField ) и все подсчеты(X1, X2, D) очищались
4)если не нажата одна из кнопок(D или roots) то при нажатии на кнопку solve ничего не выводилось

Так же у меня возникали лаги:
1)при первом подсчете результат выводился только при повторном нажатии кнопки solve.

Кто знает как все сделать прошу помочь!!!!
Заранее спасибо!!!

P.S. Любая критика кода приветствуется.

Аватара пользователя
Bellatrix
Сообщения: 5
Зарегистрирован: 28 мар 2013, 10:43

Re: Урок 19. Пишем простой калькулятор

Сообщение Bellatrix » 19 авг 2013, 21:05

Сделала и выложила благодаря этим урокам свое первое приложение :)
Кому интересно, можете оценить. Буду благодарна за оценки =)
https://play.google.com/store/apps/deta ... ndroidcalc

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 19. Пишем простой калькулятор

Сообщение Foenix » 19 авг 2013, 21:09

Bellatrix писал(а):Сделала и выложила благодаря этим урокам свое первое приложение :)
Кому интересно, можете оценить. Буду благодарна за оценки =)
https://play.google.com/store/apps/deta ... ndroidcalc
не устанавливала, но криншоты очень красивые, со вкусом. Молодец!
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Bellatrix
Сообщения: 5
Зарегистрирован: 28 мар 2013, 10:43

Re: Урок 19. Пишем простой калькулятор

Сообщение Bellatrix » 19 авг 2013, 21:18

Foenix писал(а):
Bellatrix писал(а):Сделала и выложила благодаря этим урокам свое первое приложение :)
Кому интересно, можете оценить. Буду благодарна за оценки =)
https://play.google.com/store/apps/deta ... ndroidcalc
не устанавливала, но криншоты очень красивые, со вкусом. Молодец!
Спасибо, но с дизайном мне если честно, мой парень сильно помог :) Я только установила готовые текстуры на все элементы.

Аватара пользователя
Ivlianna
Сообщения: 4
Зарегистрирован: 10 сен 2013, 12:00
Откуда: Estonia
Контактная информация:

Re: Урок 19. Пишем простой калькулятор

Сообщение Ivlianna » 24 сен 2013, 11:11

Почему у меня не появляется клавиатура, как в видео, когда запускаю приложение? Ни в прошлом уроке, ни в этом.. Ввожу с компьютера.. В чем дело?

MaxWhite
Сообщения: 4
Зарегистрирован: 25 сен 2013, 22:01

Помогите пожалуйста!

Сообщение MaxWhite » 25 сен 2013, 22:10

Уже который день не могу разобраться, все мозги поплавил) написал калькулятор, который выполняет последовательно действия - берет число, отнимает от него 10% и показывает, потом уже от этого числа отнимает 5% и показывает, а от этого отнимает 2.11% и показывает конечный результат. (например 1000 - 10% = 900; 900 - 5% = 855; 855 - 2,11% = 835) все работает. НО! в прошлом примере было одно поле EditText вводил в него ,а ответы выводились в TextViewЫ, но теперь хочу модифицировать и сделать так чтобы можно было вводить еще в два поля (в тоже время в них выводится ответ), когда они пусты, но не могу реализовать так, чтобы получать данные и считать ниже, например ввел 900 во второе поле - программа считает дальше -5%, потом -2,11% и выводит конечный результат. стоит проверка на пустоту первого поля и никак не получается, убираю проверку на пустоту - падает при нажатии кнопки "Рассчитать!" и пустых полях. даже не знаю в какую сторону думать. надеюсь, понятно написал))
Вложения
так хочу сделать
так хочу сделать
2 версия.jpg (40.26 КБ) 13128 просмотров
так было и все работает
так было и все работает
1 версия.jpg (43.29 КБ) 13128 просмотров

Ответить