есть класс наследован от View. В нем реализованы onDraw, onTouch это все внутри класса.
Объект этого класса размещен в активити, кроме него там еще элементы.
Так вот мне надо что бы активити реагировала на нажатие на мой элемент как на Button . Пробывал обрабатывать событие как в кнопке(урок 10), получаю ошибку времени исполнения.
Может если я создал собственный элемент экрана то и событие надо свое писать и как то перехватывать в активити? Я в джаве не силен и не знаю как это делать.
Я привык в с++ Qt к сигналам и слотам, java только начал изучать и как создавать собственные события и их перехватывать ни где подробно не нашел.
событие в своем View
Re: событие в своем View
Если твой элемент View присутствует в файле xml, тогда можно попробовать так:
[syntax=java]<Button
android:id="@+id/btnWrite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/write_file"
android:onClick="onclick">
</Button>[/syntax]
Это пример для кнопки, у тебя вместо слова Button будет название твоего компонента.
android:onClick="onclick" -- В коде пишем обработчик этого события.
[syntax=java]<Button
android:id="@+id/btnWrite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/write_file"
android:onClick="onclick">
</Button>[/syntax]
Это пример для кнопки, у тебя вместо слова Button будет название твоего компонента.
android:onClick="onclick" -- В коде пишем обработчик этого события.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: событие в своем View
это было первое что я испробовал. Ни каких ошибок, исключений и вообще не работает 
Re: событие в своем View
В своем классе я отключил //this.setOnTouchListener(this); и все заработало
но
у меня в классе переопределен такой метод, а без this.setOnTouchListener(this); он не работает
у меня в классе переопределен такой метод, а без this.setOnTouchListener(this); он не работает
Код: Выделить всё
@Override
public boolean onTouch(View v, MotionEvent event)
{
float x = event.getX();
float y = event.getY();
int size = measured / 10;
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
// Нажатие
for(int i = 0; i < 10; i++)
{
if((size * i < x) && (size * (i + 1) > x))
t_x_pos = i;
if((size * i < y) && (size * (i + 1) > y))
t_y_pos = i;
}
break;
}
this.invalidate();
return true;
} - KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: событие в своем View
Хм... this.setOnTouchListener(this);... Весело тут у вас.
Если View самостоятельно обрабатывает нажатия setOnTouchListener использовать не нужно. Можно просто переопределить метод onTouchEvent.
Если View самостоятельно обрабатывает нажатия setOnTouchListener использовать не нужно. Можно просто переопределить метод onTouchEvent.
Код: Выделить всё
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
// Дальше свой код
}R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.