Страница 1 из 1

OnKeyListener

Добавлено: 16 сен 2018, 13:45
kant1207
Здравствуйте. написал программу, которая в режиме редактирования EditText сразу расчитывает результат и выводит его в TextView. В симуляторе работает отлично, закидываю на смартфон, и при вводе числа(цифр с тачклавиатуры), расчет не производит. помогите разобраться что не так(я прошел пока что 16 уроков)а срабатывает только тогда, когда я тапаю на энтер(на смартфоне)

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

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/tekst"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Button"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tekst" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:inputType="number|numberDecimal"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText2" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:inputType="numberDecimal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
а вот сам код явы

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

package com.example.summa2;

import android.support.v7.app.AppCompatActivity;
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;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    Button button;
    TextView tekst;
    EditText editText;
    EditText editText2;

    int num1 = 0;
    int num2 = 0;
    int result = 0;
    int vlag = 0;
    int [][] cats = {
            {90,81,71,63,54,0,0,0,0,0,0},//20
            {90,81,72,64,55,47,0,0,0,0,0},//21
            {91,82,73,64,56,48,41,0,0,0,0},//22
            {91,82,74,65,58,50,42,0,0,0,0},//23
            {91,83,74,66,59,51,44,0,0,0,0},//24
            {91,83,75,67,60,52,45,38,0,0,0},//25
            {92,84,76,69,61,54,49,41,35,29,23},//26
            {92,84,77,69,62,55,50,43,36,30,25},//27
            {92,84,77,70,63,56,51,44,38,32,27},//28
            {92,85,78,71,64,57,52,45,39,34,28},//29
            {92,85,78,71,65,58,53,56,41,35,30},//30
            {93,85,78,72,65,59,54,47,42,36,31},// 31
            {93,86,79,72,66,60,55,48,43,38,33},// 32
            {93,86,79,73,67,61,56,49,44,39,34},// 33
            {0,86,80,73,67,61,57,50,45,40,35},// 34
            {0,86,80,74,68,62,57,51,46,41,36},// 35
            {0,87,80,74,68,63,58,52,47,42,38},// 36
            {0,87,81,75,69,63,59,53,48,43,39},// 37
            {0,87,81,75,70,64,59,54,49,44,40},// 38
            {0,87,81,76,70,65,60,55,50,45,41},// 39
            {0,88,82,76,70,65,61,55,51,46,42},// 40
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button);

        tekst = (TextView) findViewById(R.id.tekst);
        editText = (EditText) findViewById(R.id.editText);
        editText2 = (EditText) findViewById(R.id.editText2);



        View.OnClickListener oclbutton = new View.OnClickListener() {
            @Override
            public void onClick(View v) {

              /*  // Проверяем поля на пустоту
                if (TextUtils.isEmpty(editText.getText().toString())){num1  =0 ;}
                else{num1 = Integer.parseInt(editText.getText().toString());}
                     if( TextUtils.isEmpty(editText2.getText().toString())) { num2 = 0; }
                     else{num2 = Integer.parseInt(editText2.getText().toString());}
                // TODO Auto-generated method stub
                result = num1 + num2 ;
                tekst.setText( ""+result);*/
              //  Toast.makeText(this, "добавить", Toast.LENGTH_SHORT).show();
                result = cats[0][1];

                tekst.setText( ""+result);
            }
        };
        View.OnKeyListener oclEdit = new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                // Проверяем поля на пустоту
                if (TextUtils.isEmpty(editText.getText().toString())){num1  =0 ;}
                else{num1 = Integer.parseInt(editText.getText().toString());}
                if( TextUtils.isEmpty(editText2.getText().toString())) { num2 = 0; }
                else{num2 = Integer.parseInt(editText2.getText().toString());}
                // TODO Auto-generated method stub
                result =  num2 - num1 ;
                if(result<12&&result>0){vlag = cats[num2-20][result-1];}
                else {vlag = 0;}
                tekst.setText( vlag+"%");
                return false;
            }

        };

        View.OnClickListener oclEdit1 = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Проверяем поля на пустоту
                if (TextUtils.isEmpty(editText.getText().toString())){num1  =0 ;}
                else{num1 = Integer.parseInt(editText.getText().toString());}
                if( TextUtils.isEmpty(editText2.getText().toString())) { num2 = 0; }
                else{num2 = Integer.parseInt(editText2.getText().toString());}
                // TODO Auto-generated method stub
                result =  num2 - num1 ;
                if(result<12&&result>0){vlag = cats[num2-20][result-1];}
                else {vlag = 0;}
                tekst.setText( vlag+"%");


            }
        };

        button.setOnClickListener(oclbutton);
       editText.setOnKeyListener(oclEdit);
        editText.setOnClickListener(oclEdit1);
        //editText.setOnEditorActionListener(oclEdit2);


    }

}

это программа для расчета влажности по показаниям сухого и влажного термометра(для проверки в верхнее едит число 20 в нижнее число 17, и должен высветиться результат 71%