2013-04-22 2 views
0

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

public void onCreate() { 
    super.onCreate(); 

    final LayoutInflater mcInflator = (LayoutInflater) ctext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    bla bla bla bla bla 
    ... 

if (call.toString().contains("Missed")){ 

        View mcLayout= mcInflator.inflate(R.layout.m_call, null); 
        TextView mc = (TextView) mcLayout.findViewById(R.id.mcText); 
        mc.setText("Missed Call"); 
       } 

       if (call.toString().contains("Outgoing")){ 

    bla bla bla bla bla .... 

но когда я проверяю свою выкладку, текст не изменяется? любое предложение, пожалуйста?

+0

** «Любое предложение пожалуйста?» ** - Да ... не пытайтесь это сделать. Во-первых, вы не можете гарантировать, что «Активность» будет фактически существовать. Во-вторых, вы не можете раздувать или получать доступ к представлению, которое находится в «Деятельности» из «Сервиса». В-третьих, зачем вам это делать? Если я пропущу звонок, я получаю уведомление, в котором сообщается, что я пропустил звонок - это правильный способ уведомить кого-то о пропущенном вызове, а не в «TextView» операции «Активность», которая может быть или не работать. – Squonk

ответ

0

О мой ... Хорошо, здесь мы идем:

  • Вы не хотите делать какие-либо вещи UI в службе. Это довольно плохая практика.
  • Вы создаете и изменяете новый экземпляр вашего представления, а не тот, который отображается на экране.
  • Что вы, вероятно, захотите сделать, это привязать действующую службу к вашей деятельности. См. Пример here.
Смежные вопросы