Каждый раз, когда вы входите в основное действие, код ниже будет выполнен и работает нормально (это означает, что 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
.
Это интересно. Могу ли я узнать, что вы видите (сообщение), когда оно не функционирует так, как ожидалось? – LightYearsBehind
Можете ли вы дать немного больше информации о том, где сновазывается вызов 'rebuildIndex()'? Это из 'onResume()'? что фактически запускает метод и что вызывает 'handleMessage()' 'Handler'? –
'rebuildIndex' вызывается из' onStart' активности, а сообщение является нормальным литералом 'String' – MrROY