Android: запуск активности при нажатии EditText

Как начать новое действие, когда пользователь касается EditText, например, в поиске Facebook и виджете поиска Google?

Настройка setOnClickListener работает только после первого клика. При первом щелчке EditText становится выделенным, и появляется клавиатура. При втором щелчке открывается новая активность. Я не хочу этого, вместо этого я хочу открыть активность при первом нажатии. Как это сделать?


person Rohith Nandakumar    schedule 24.04.2011    source источник
comment
Есть ли причина, по которой поле, на которое вы нажимаете, должно быть редактируемым текстом? Вероятно, это будет работать как просто изображение, которое выглядит как редактируемый текст, поскольку его все равно никто не будет печатать.   -  person chustar    schedule 24.04.2011
comment
Виджет приложения поиска Google не имеет EditText. Вы не можете иметь EditText в виджете приложения. Как предполагает @chustar, наличие EditText нелепо, если оно не позволяет пользователю редактировать текст.   -  person CommonsWare    schedule 24.04.2011


Ответы (3)


Вам нужно отключить фокус EditText в сенсорном режиме, что заставит onclick выполняться при первом нажатии:

<EditText ...
      android:focusableInTouchMode="false" 
      android:editable="false"
/>
person dmon    schedule 24.04.2011
comment
Большое спасибо, это сэкономило мне время, я много занимался исследованиями и разработками :) - person Sharanabasu Angadi; 20.01.2016

Установите тип ввода EditText на InputType.TYPE_NULL:

editText.setInputType(InputType.TYPE_NULL);

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

public void onEditTextClick(View arg0) 
{
    Intent intent = new Intent(MainActivity.this, SecondActivity.class);
    startActivity(intent);
}

Разумеется, метод onEditTextClick должен быть зарегистрирован в объекте EditText :)

person shihpeng    schedule 24.04.2011

Пожалуйста, попробуйте это

<EditText
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:onClick="search"/>

and

public void search(View view) 
{
    EditText text = (EditText)view;

    if(text.length() == 0)
        return;
    Intent intent = new Intent(MainActivity.this, SecondActivity.class);
    startActivity(intent);
}

person Bipin Vayalu    schedule 24.04.2011
comment
Это то же самое, что и установка setOnClickListener из кода. Это не работает. - person Rohith Nandakumar; 24.04.2011
comment
Привет, могу ли я точно знать, через сколько символов вы хотите загрузить новую активность. Я удалил inputType из EditText. так что попробуй. если вы знаете номер символа, замените 0 на этот номер 1. - person Bipin Vayalu; 25.04.2011