Можно ли предоставить прослушиватель кликов для тоста в Android?

Я пытаюсь предоставить прослушиватель щелчков для тост-сообщения. Кто-нибудь скажет мне, можно ли предоставить прослушиватель щелчков для тоста в Android?

Я использую настраиваемое представление для тоста, и я применяю прослушиватель onclick к моему представлению, он не работает.

LayoutInflater inflater = (LayoutInflater) ConnectToXMPP.mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View layout = inflater.inflate(R.layout.chat_message_alert_dialog,null);
TextView text = (TextView) layout.findViewById(R.id.chat_popup_message_textview);
text.setText("From : " + fromName+ "\n" + fromName);
LinearLayout chatMessageLayout = (LinearLayout)    
layout.findViewById(R.id.chat_popup_message_layout);

Toast toast = new Toast(ConnectToXMPP.mContext);
toast.setView(layout);
toast.setGravity(Gravity.CENTER_VERTICAL, 0,0);
toast.setDuration(60000);
toast.getView().setClickable(true);
toast.getView().setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

     Toast.makeText(ConnectToXMPP.mContext,"toast touched",Toast.LENGTH_SHORT).show();

}
});
toast.show();

person Android_dev    schedule 09.08.2014    source источник
comment
нет, ты не можешь этого сделать   -  person pskink    schedule 09.08.2014
comment
Вместо этого используйте диалог. Вы можете использовать CountDownTimer, чтобы автоматически закрыть его.   -  person Phantômaxx    schedule 09.08.2014
comment
Вы можете использовать SuperToasts или Crouton для дополнительных функций, подобных этой.   -  person Mahm00d    schedule 09.08.2014
comment
Возможно, вы захотите использовать Snackbar, а не Toast, поскольку первый имеет встроенную функцию щелчка / действия: разработчик .android.com / training / snackbar.   -  person ban-geoengineering    schedule 08.11.2018


Ответы (2)


Ответ Януша

На тосте нельзя щелкнуть. Невозможно зафиксировать щелчок внутри всплывающего сообщения. Для этого вам нужно будет создать диалог. См. Создание диалогов для получения дополнительной информации.

API класса Toast утверждает, что тост никогда не получит фокус и поскольку тост не является представлением, сообщение onClick отсутствует. Я бы предположил, что поэтому дочерние элементы Toast также нельзя щелкнуть.

person Muhammad Zahid    schedule 09.08.2014
comment
Я ждал этого подтверждения. Я всегда думал, что Toast будет получать события щелчка. Я не смог найти документацию, в которой говорится об этом. - person Farruh Habibullaev; 11.02.2020

Взгляните на библиотеку John Persanos SuperToast. Он включает в себя интерактивные тосты. репозиторий Github

person Ivan Wooll    schedule 09.08.2014