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

Как проверить заполненность поля ввода?

Добавлено: 12 июн 2015, 16:39
piteriv
Здравствуйте!
Написал Android приложение которое при вводе двух чисел вычисляет их логический результат. При проверке на реальном планшете приложение работает, но если поля пустые то при выборе логической операции, из контекстного меню, приложение виснет и операционка его закрывает.
Пожалуйста подскажите в чём ошибка? Разъясните пожалуйста?
Я пытался поставить условие проверки полей ввода на предмет если они пустые, но незнаю, что содержит пустое поле ввода.
Вот мой код.

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

package piter.logic;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity {
	
	EditText x1, x2;
	TextView y1, y2;
	
	final int and = 1;
	final int or = 2;
	final int xor = 3;
	final int not = 4;
	final int equ = 5;
	int a, b;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        x1 = (EditText) findViewById(R.id.x1);
        x2 = (EditText) findViewById(R.id.x2);
        y1 = (TextView) findViewById(R.id.y1);
        y2 = (TextView) findViewById(R.id.y2);
        
        registerForContextMenu(y2);
    }
    @Override
    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo){
    	menu.add(0, and, 0, "Логическое побитовое И");
    	menu.add(0, or, 0, "Логическое побитовое ИЛИ");
    	menu.add(0, xor, 0, "Логическое побитовое Исключающее ИЛИ");
    	menu.add(0, not, 0, "Логическое отрицание");
    	menu.add(0, equ, 0, "Логическое сравнение");
    }
    @Override
    public boolean onContextItemSelected(MenuItem item){
    	switch (item.getItemId()){
    	case and:
    		a = Integer.parseInt(x1.getText().toString());
    		b = Integer.parseInt(x2.getText().toString());
    		y1.setText((a&b)+"");
    	break;
    	case or:
    		a = Integer.parseInt(x1.getText().toString());
    		b = Integer.parseInt(x2.getText().toString());
    		y1.setText((a|b)+"");
    	break;
    	case xor:
    		a = Integer.parseInt(x1.getText().toString());
    		b = Integer.parseInt(x2.getText().toString());
    		y1.setText((a^b)+"");
    	break;
    	case not:
    		a = Integer.parseInt(x1.getText().toString());
    		b = Integer.parseInt(x2.getText().toString());
    		if((a!=b)==false)y1.setText("Ложь");
    		else y1.setText("Истина");
    	break;
    	case equ:
    		a = Integer.parseInt(x1.getText().toString());
    		b = Integer.parseInt(x2.getText().toString());
    		if((a==b)==true)y1.setText("Истина");
    		else y1.setText("Ложь");
    	break;
    	}
    	return super.onContextItemSelected(item);
    }
}

Re: Как проверить заполненность поля ввода?

Добавлено: 12 июн 2015, 16:46
Realist
piteriv писал(а): но незнаю, что содержит пустое поле ввода.
""

Re: Как проверить заполненность поля ввода?

Добавлено: 12 июн 2015, 17:44
doter.ua
a = Integer.parseInt(x1.getText().toString());
b = Integer.parseInt(x2.getText().toString());
можно вынести вне свич.

Re: Как проверить заполненность поля ввода?

Добавлено: 13 июн 2015, 08:00
piteriv
Вставляю условие проверки и прога виснет на планшете, а без условия работает?
Почему?

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

    @Override
    public boolean onContextItemSelected(MenuItem item){
    	if((x1.getText().toString()=="")||(x2.getText().toString()=="")){
    		x1.setText(0+"");
    		x2.setText(0+"");
    	}
    	a = Integer.parseInt(x1.getText().toString());
    	b = Integer.parseInt(x2.getText().toString());
    	switch (item.getItemId()){
    	case and:
    		y1.setText((a&b)+"");
    	break;
    	case or:
    		y1.setText((a|b)+"");
    	break;
    	case xor:
    		y1.setText((a^b)+"");
    	break;
    	case not:
    		if((a!=b)==false)y1.setText("Ложь");
    		else y1.setText("Истина");
    	break;
    	case equ:
    		if((a==b)==true)y1.setText("Истина");
    		else y1.setText("Ложь");
    	break;
    	}
    	return super.onContextItemSelected(item);
    }

Re: Как проверить заполненность поля ввода?

Добавлено: 13 июн 2015, 10:40
Dark67
if((x1.getText().toString().equals(""))||(x2.getText().toString().equals("")))

Re: Как проверить заполненность поля ввода?

Добавлено: 13 июн 2015, 10:49
Donart
piteriv писал(а):Почему?
Прочти внимательно 100 первых страниц любой книжки по Java и не один подобный вопрос у тебя больше не возникнет. Займет день-два.