Почему всплывающее сообщение не отображается в операционной системе Android 4.1, содержащей мобильные устройства?

Я не вижу всплывающее сообщение в мобильном телефоне Android 4.1. До вчерашнего дня я мог видеть тост-сообщение. С сегодняшнего дня только сообщения не вижу. Помогите пожалуйста мне.

Toast.makeText(getApplicationContext(), "hi", Toast.LENGTH_SHORT).show(); 

Я также пробовал пользовательское всплывающее сообщение вместо всплывающего сообщения. Но все еще не работает.

Пользовательское всплывающее уведомление:

LayoutInflater inflater=getLayoutInflater(); 
View layout = inflater.inflate(R.layout.toast_layout,(ViewGroup) findViewById(R.id.toast_layout_root)); 
TextView text = (TextView) layout.findViewById(R.id.text); 
text.setText("Please fill Name"); 
Toast toast = new Toast(getApplicationContext()); 
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG); 
toast.setView(layout); 
toast.show();

person AndroidRaji    schedule 28.08.2012    source источник
comment
Пожалуйста, поделитесь своим кодом или лог-треками.   -  person sdabet    schedule 28.08.2012
comment
if(first_name.length()‹1 ||first_name==null) { Toast.makeText(getApplicationContext(), Пожалуйста, заполните имя, Toast.LENGTH_SHORT).show(); Utilities.writeIntoLog(Пожалуйста, заполните имя); }   -  person AndroidRaji    schedule 28.08.2012
comment
Я только что проверил это на устройстве 4.1, и это сработало. Вы уверены, что ваша строка first_name на самом деле пуста?   -  person sdabet    schedule 28.08.2012
comment
вероятно, ваш контекст не подходит!   -  person Iulia Barbu    schedule 28.08.2012
comment
Не имеет прямого отношения к вашей проблеме, но вам действительно следует сначала выполнить проверку на нулевое значение, потому что, если оно на самом деле равно нулю, вы столкнетесь с первым условием.   -  person nEx.Software    schedule 28.08.2012


Ответы (5)


Измените на это и проверьте снова.

if(first_name.length() == 0) 
{ 
    Toast.makeText(NameOfYourActivity.this, "Please fill Name", Toast.LENGTH_SHORT).show(); 
    Utilities.writeIntoLog("Please fill Name"); 
}
person Chirag    schedule 28.08.2012
comment
видите, я могу просмотреть всплывающее сообщение в галактике, эмуляторе. Но я не могу видеть в нексусе (ОС 4.1) - person AndroidRaji; 28.08.2012
comment
@AndroidRaji Я просто хочу проверить, работает ли этот код в nexus (4.1). Поэтому, пожалуйста, попробуйте мой код и дайте мне знать, работает он или нет. - person Chirag; 28.08.2012
comment
Вы все равно должны запустить проверку NULL. - person slybloty; 28.08.2012
comment
я также пробовал пользовательское всплывающее сообщение вместо всплывающего сообщения. но все еще не работает. Пользовательское всплывающее сообщение: LayoutInflater inflater = getLayoutInflater (); View layout = inflater.inflate(R.layout.toast_layout,(ViewGroup) findViewById(R.id.toast_layout_root)); TextView text = (TextView) layout.findViewById(R.id.text); text.setText(Пожалуйста, заполните имя); Toast toast = новый Toast(getApplicationContext()); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(макет); тост.шоу(); - person AndroidRaji; 29.08.2012

Тост не отображался у меня в Android 4.1, потому что в настройках моего приложения был отключен показ уведомлений. Я просто зашел в «Настройки» -> «Управление приложениями» -> [Мое приложение] и включил «Показывать уведомления», и начали появляться всплывающие уведомления.

person Haris ur Rehman    schedule 05.01.2013
comment
Спасибо @herman. Я перепробовал все способы отображения всплывающего сообщения и застрял, но ваш пост помогает мне найти причину. - person Shweta; 10.06.2013
comment
Я рад это слышать. Спасибо. - person Haris ur Rehman; 10.06.2013
comment
Очевидно, самое глупое изменение, которое я когда-либо видел. Вот что происходит, когда Google нанимает любителей писать код. - person AndroidDev; 20.11.2013
comment
Спасибо!! Спас мой день. - person Hamzeh Soboh; 05.09.2014

просто разместите здесь ссылку на код Google.

Начиная с Jelly Bean, пользователи могут отключать уведомления для данного приложения через настройки «сведения о приложении».

Очень плохой и нежелательный побочный эффект заключается в том, что после отключения уведомлений всплывающие сообщения также отключаются, даже когда пользователь запускает приложение!

Вы рекомендуете использовать Toast в своих рекомендациях по дизайну, но кто захочет его использовать, если у пользователей есть возможность удалить его, особенно если всплывающее сообщение является важным отзывом для пользователя...

По крайней мере, я понимаю, что тосты можно отключить, когда приложение находится в фоновом режиме, но не в том случае, если это активность переднего плана.

person James Zhao    schedule 24.12.2012

Toast отлично работает на всех версиях Android. В вашем коде может быть несколько проблем, например

  1. Ваш контекст не является неправильным
  2. Вы пытаетесь отобразить тост в фоновом потоке вместо рабочего потока.

Редактировать В своем пользовательском тосте не устанавливайте родителя в вашем макете, например, используйте, как показано ниже.

View layout = inflater.inflate(R.layout.toast_layout,null);
person Dharmendra    schedule 29.08.2012
comment
Пожалуйста, скажите мне, что такое фоновый поток и рабочий поток. Можете ли вы дать мне пример кода для обоих. - person AndroidRaji; 29.08.2012
comment
Рабочий поток — это основной поток, в котором выполняются все ваши рисунки и анимация, а также он отвечает за обновление пользовательского интерфейса вашего приложения. Вы можете прочитать документацию о потоке Main (UI). В каждом приложении есть основной поток, а фоновый поток — это те, которые вы создаете для фонового процесса. - person Dharmendra; 29.08.2012
comment
Документация Android указывает, что вы должны передать идентификатор корневого элемента в вашем тосте в качестве второго аргумента для inflater.inflate. - person ; 18.04.2014

У меня такая же проблема. Когда я вызвал код в потоке пользовательского интерфейса, проблема была решена для меня.

public void showToastMessage(final String msg) {

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(BaseActivity.this, msg, Toast.LENGTH_LONG).show();
        }
    });
}
person mujeeb    schedule 04.09.2017