Работа с EditText

Ответить
АндрЕвгений
Сообщения: 19
Зарегистрирован: 29 сен 2013, 20:38

Работа с EditText

Сообщение АндрЕвгений » 29 сен 2013, 20:45

Здравствуйте!)
Подскажите, пожалуйста, как правильно сделать запрет на вывод в поле EditText отрицательных значений?

Аватара пользователя
adarash
Сообщения: 333
Зарегистрирован: 17 июл 2013, 09:59

Re: Работа с EditText

Сообщение adarash » 30 сен 2013, 09:18

АндрЕвгений писал(а):Здравствуйте!)
Подскажите, пожалуйста, как правильно сделать запрет на вывод в поле EditText отрицательных значений?
Вот как-то так.

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

	edittext.addTextChangedListener(new TextWatcher() {

		public void afterTextChanged(Editable s) {
			if(Integer.parseInt(s.toString())<=0){
				edittext.setText("");
				//или то действие, которое ты сам захочешь
			}

		public void beforeTextChanged(CharSequence s, int start,
		int count, int after) {
		
		}
		
		@Override
		public void onTextChanged(CharSequence s, int start,
		int before, int count) {
		

		}
	});

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

Re: Работа с EditText

Сообщение rezak90 » 30 сен 2013, 09:59

adarash писал(а):
АндрЕвгений писал(а):Здравствуйте!)
Подскажите, пожалуйста, как правильно сделать запрет на вывод в поле EditText отрицательных значений?
Вот как-то так.

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

	edittext.addTextChangedListener(new TextWatcher() {

		public void afterTextChanged(Editable s) {
			if(Integer.parseInt(s.toString())<=0){
				edittext.setText("");
				//или то действие, которое ты сам захочешь
			}

		public void beforeTextChanged(CharSequence s, int start,
		int count, int after) {
		
		}
		
		@Override
		public void onTextChanged(CharSequence s, int start,
		int before, int count) {
		

		}
	});
эпик фейл будет если я введу "Hello world"
R.id.team
Политика на форуме запрещена

Аватара пользователя
adarash
Сообщения: 333
Зарегистрирован: 17 июл 2013, 09:59

Re: Работа с EditText

Сообщение adarash » 30 сен 2013, 10:13

rezak90 писал(а):
adarash писал(а):
АндрЕвгений писал(а):Здравствуйте!)
Подскажите, пожалуйста, как правильно сделать запрет на вывод в поле EditText отрицательных значений?
Вот как-то так.

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

	edittext.addTextChangedListener(new TextWatcher() {

		public void afterTextChanged(Editable s) {
			if(Integer.parseInt(s.toString())<=0){
				edittext.setText("");
				//или то действие, которое ты сам захочешь
			}

		public void beforeTextChanged(CharSequence s, int start,
		int count, int after) {
		
		}
		
		@Override
		public void onTextChanged(CharSequence s, int start,
		int before, int count) {
		

		}
	});
эпик фейл будет если я введу "Hello world"
Если в свойствах edittext будет прописано android:inputType="number", то эпик фэла не бодит ибо вызовется цифровая клавиатура и не будет возможности вводить текстовые символы . В задаче же явно поставлено условие про отрицательные значения.

АндрЕвгений
Сообщения: 19
Зарегистрирован: 29 сен 2013, 20:38

Re: Работа с EditText

Сообщение АндрЕвгений » 30 сен 2013, 15:48

Спасибо!)
Вставил я это в код, выпала ошибка "Syntax error on token "addTextChangedListener", = expected after this token". Что не так?
Это единственный способ? Просто, у меня 11 активити и в каждой по 11 EditText, где одно поле предназначено для ввода значения, а остальные - только для вывода результата.

АндрЕвгений
Сообщения: 19
Зарегистрирован: 29 сен 2013, 20:38

Re: Работа с EditText

Сообщение АндрЕвгений » 30 сен 2013, 21:34

Ошибку в коде нашёл. Но,когда запускаю приложение и ввожу число, оно неожиданно завершается. вот ссылка на приложение, гляньте http://play.google.com/store/apps/detai ... onofattack

Аватара пользователя
adarash
Сообщения: 333
Зарегистрирован: 17 июл 2013, 09:59

Re: Работа с EditText

Сообщение adarash » 01 окт 2013, 08:56

АндрЕвгений писал(а):Спасибо!)
Вставил я это в код, выпала ошибка "Syntax error on token "addTextChangedListener", = expected after this token". Что не так?
Это единственный способ? Просто, у меня 11 активити и в каждой по 11 EditText, где одно поле предназначено для ввода значения, а остальные - только для вывода результата.
Прошу прощения, один символ забыл.

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

edittext.addTextChangedListener(new TextWatcher() {

			public void afterTextChanged(Editable s) {
				if (Integer.parseInt(s.toString()) <= 0) {
					edittext.setText("");
					// или то действие, которое ты сам захочешь
				}
			}

			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {

			}

			@Override
			public void onTextChanged(CharSequence s, int start, int before,
					int count) {

			}

		});
По поводу 11 активити. Создай один класс расширяющий TextWatcher отдельно в проекте и применяй его всем.

АндрЕвгений
Сообщения: 19
Зарегистрирован: 29 сен 2013, 20:38

Re: Работа с EditText

Сообщение АндрЕвгений » 01 окт 2013, 09:37

Вы ещё не видели, что из себя представляет приложение? Посмотрите, когда, после применения метода,я запускаю проект, при попытке ввести значение, приложение неожиданно завершается... А нельзя поставить такое ограничение в .xml,так же, как, например, android:inputType="number"?

Аватара пользователя
adarash
Сообщения: 333
Зарегистрирован: 17 июл 2013, 09:59

Re: Работа с EditText

Сообщение adarash » 01 окт 2013, 10:41

не знаю, как тебе, а мне в твое приложение(с телефона) не удается ввести отрицательное значение вообще.

АндрЕвгений
Сообщения: 19
Зарегистрирован: 29 сен 2013, 20:38

Re: Работа с EditText

Сообщение АндрЕвгений » 01 окт 2013, 15:23

Так, всё правильно!) В свойствах edittext прописано
android:inputType="number"... Попробуй ввести,скажем, 10 попрошаек, далее увидим,что всех остальных -4, –7, –10 и так далее... мне нужно,что бы выводились только положительные значения! А значения со знаком «—» заменялись на «0» или фразу, например, «на данный момент не требуется» ... Просто пользователи часто не понимают и жалуются на этот «—».
Теперь понятно чего я хочу? Запрет на ВЫВОД, а не на ввод. Запрет на ВВОД отрицательных значений я давно поставил)

Аватара пользователя
adarash
Сообщения: 333
Зарегистрирован: 17 июл 2013, 09:59

Re: Работа с EditText

Сообщение adarash » 01 окт 2013, 16:17

АндрЕвгений писал(а):Так, всё правильно!) В свойствах edittext прописано
android:inputType="number"... Попробуй ввести,скажем, 10 попрошаек, далее увидим,что всех остальных -4, –7, –10 и так далее... мне нужно,что бы выводились только положительные значения! А значения со знаком «—» заменялись на «0» или фразу, например, «на данный момент не требуется» ... Просто пользователи часто не понимают и жалуются на этот «—».
Теперь понятно чего я хочу? Запрет на ВЫВОД, а не на ввод. Запрет на ВВОД отрицательных значений я давно поставил)
Вот класс:

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

package com.example.testedittest;

import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;

public class tw implements TextWatcher {
	EditText et;

	public tw(EditText et) {
		this.et = et;
	}

	@Override
	public void onTextChanged(CharSequence s, int start, int before, int count) {
		try {
			String str = s.toString().trim();
			int i = Integer.parseInt(str);
			if (i < 0) {
				et.setText("0");
			}
		} catch (NumberFormatException e) {
			et.setText("0");
		}
	}

	@Override
	public void beforeTextChanged(CharSequence s, int start, int count,
			int after) {

	}

	@Override
	public void afterTextChanged(Editable s) {

	}
}
вот как его присваивать:

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

et1.addTextChangedListener(new tw(et1));
et2.addTextChangedListener(new tw(et2));
ну и так далее, ты понял, что менять нужно. И все. Если будет отрицательное, то сразу же на 0 сменится.Пользуйся.

Блин, и не лень же мне было писать.

АндрЕвгений
Сообщения: 19
Зарегистрирован: 29 сен 2013, 20:38

Re: Работа с EditText

Сообщение АндрЕвгений » 02 окт 2013, 06:14

Заработало!!!) Благодарю вас за проявленное внимание)

Ответить