Почему сообщение «тост» не работает, в Android? Не удается исправить ошибку, пожалуйста, помогите!

StackOverflow https://stackoverflow.com/questions/4024620

Вопрос

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

public class Background extends Service 
{
    public void popup (String message, int duration)
    {
        Toast.makeText(this, message, duration).show();
    }

    class BackgroundChecker extends TimerTask 
    {
        public void run()
        {
            popup("Message!", Toast.LENGTH_LONG); // here
        }
    }
}

Когда он достигает всплывающего сообщения, т.е. // здесь, Android говорит мне заставить выйти. Я знаю, что проблема с контекстом, т.е. this, но я не знаю, почему, потому что я продлил услугу в этом классе, который сказал мне Android API. Можете ли вы помочь мне выяснить, почему это происходит и как это исправить? Кстати, вместо this я использовал getApplicationContext() а также все еще падают = (.

Спасибо.

Это было полезно?

Решение

Я не пробовал это, но как насчет вашего сервиса рассказать о деятельности, чтобы сделать тост, поскольку сервис - это фоновая активность, похоже, что его контекст не будет работать, чтобы сделать тост.

Что-то еще, что вы могли бы попробовать, это расширить класс приложений и иметь генератор тоста, а затем от вашего обслуживания.

ApplicationExtender variableName = (ApplicationExtender) Background.this.getApplication();              
variableName.toast("message");

Ваше applicationextender:

public class ApplicationExtender extends Application {

    public void toast(String message){
    Toast.makeText(super.getApplicationContext(),message,Toast.LENGTH_LONG).show();
    }

}

Вам нужно добавить свой расширенный класс к вашему проявлению для его работы.

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".ApplicationExtender">

Я не могу гарантировать это будет работать, я не пробовал.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top