Почему сообщение «тост» не работает, в Android? Не удается исправить ошибку, пожалуйста, помогите!
Вопрос
Представьте, что у меня есть следующий код, который работает как фоновый процессор для приложения 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">
Я не могу гарантировать это будет работать, я не пробовал.