2016-09-30 3 views
1

Каждый раз, когда вы входите в основное действие, код ниже будет выполнен и работает нормально (это означает, что indexStatus.setText(msg.obj.toString()); всегда показывает последние сообщения).Android: TextView setText работает только в первый раз

Но если нажать back кнопки для переключения, и затем перейти в том же экране (reBuildIndex будет работать снова), то Log.d(TAG, msg.obj.toString()); работает отлично, распечатайте последние сбщ, но indexStatus.setText не работает, последняя тзд делает не отображается, как я ожидал.

Что здесь происходит? Любое предложение ?

void rebuildIndex(boolean reCreate) { 
    final TextView indexStatus = (TextView) this.findViewById(R.id.index_status); 
    indexStatus.setVisibility(View.INVISIBLE); 
    indexStatus.setText(R.string.rebuild_index_progress_title); 

    final Handler statusHandler = new Handler(Looper.getMainLooper(), new Handler.Callback() { 
     @Override 
     public boolean handleMessage(Message msg) { 
     if (msg.obj == null) { 
      indexStatus.setVisibility(View.GONE); 
     } else if (msg.obj.equals("show")) { // TODO quick demo, shouldn't use literal text. 
      indexStatus.setVisibility(View.VISIBLE); 
     } else { 
      Log.d(TAG, msg.obj.toString()); 
      if (indexStatus.getVisibility() != View.VISIBLE) { 
      indexStatus.setVisibility(View.VISIBLE); 
      } 
      indexStatus.setText(msg.obj.toString()); 
      indexStatus.invalidate(); 
     } 
     return false; 
     } 
    }); 

    Indexer.rebuildIndexIfNecessary(statusHandler, reCreate); 
    } 

UPDATE:

Я добавил indexStatus.invalidate(); после setText в третьем состоянии, не работает.

ОБНОВЛЕНИЕ: Неправильный пароль при первоначальном посту, я сказал, что home, но на самом деле его back, чтобы выключить. home кнопка переключатель вне/в работах хорошо.

UPDATE: Пытался разместить обработчик как глобальную переменную, но не работал. Теперь я отключил событие back.

+0

Это интересно. Могу ли я узнать, что вы видите (сообщение), когда оно не функционирует так, как ожидалось? – LightYearsBehind

+0

Можете ли вы дать немного больше информации о том, где сновазывается вызов 'rebuildIndex()'? Это из 'onResume()'? что фактически запускает метод и что вызывает 'handleMessage()' 'Handler'? –

+0

'rebuildIndex' вызывается из' onStart' активности, а сообщение является нормальным литералом 'String' – MrROY

ответ

0

Если нуждается в TextView быть всегда установлен видим в этой части коды:

if (indexStatus.getVisibility() != View.VISIBLE) { 
    indexStatus.setVisibility(View.VISIBLE); 
} 

затем удалить if части.