Раньше у меня был тост, в котором
Handler().postDelayed(DELAY){
// show toast
}
чтобы переместить пользователя в какое-то место в настройках Android. Из API 29 этот тост больше не появляется. Если я нажму кнопку «Домой» до того, как ЗАДЕРЖКА закончится, на рабочем столе Android не возникнет проблем.
Произошло ли какое-то необъявленное изменение, что с API 29 больше нельзя показывать тост в настройках Android?
А еще можно там тост как-нибудь показать?
Toast все еще работает для меня, если вы хотите показать тост внутри потока, используйте это:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Hi !", Toast.LENGTH_SHORT).show();
}
});
Но если это не сработает для вас, вы можете использовать настраиваемое тост-сообщение везде, где захотите. сначала создайте класс CustomeToast:
public class CustomToast {
public void showMessage(Context context, String message){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE );
View view =inflater.inflate(R.layout.toast, null);
View layout = view.findViewById(R.id.toast_layout_root);
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText(message);
Toast toast = new Toast(context);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
}
Затем используйте везде, где хотите:
CustomToast customToast= new CustomToast();
customToast.showMessage(getApplicationContext(),"Hi !");
Да, работает ...
Работает над настройками андроида?