メインアクティビティを入力するたびに、以下のコードが実行され、正常に動作します(つまり、indexStatus.setText(msg.obj.toString());
は最新のmsgを表示します)。Android:TextView setTextは初めての動作です
しかし、私は出て切り替えることback
ボタンを押して、(reBuildIndex
を再度実行します)同じ画面に切り替えた場合、Log.d(TAG, msg.obj.toString());
は最新のMSGをプリントアウトし、正常に動作しますが、indexStatus.setText
動作しません、最新のMSGはありません期待どおりに表示されません。
ここでは何が起こっていますか?なにか提案を ?
は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:私は第三条件にsetText
後indexStatus.invalidate();
を追加しました
は、いずれかの動作しません。
更新: 私はプレスhome
を押して言ったが、実際にはそのback
をスイッチアウトすると言った。 home
ボタンスイッチの出入りがうまく動作します。
更新: ハンドラをグローバル変数として配置しようとしましたが、機能しませんでした。今私はback
イベントを無効にしました。
これは興味深いことです。期待どおりに機能していないときに何が表示されているのか分かりますか? – LightYearsBehind
'rebuildIndex()'が再び呼び出される場所に関する情報をもう少し与えることができますか?それは 'onResume()'からですか?実際にこのメソッドをトリガするものと、 'Handler'の' handleMessage() 'をトリガするものは何ですか? –
'rebuildIndex'はアクティビティの' onStart'から呼び出され、メッセージは通常の文字列 'String'です – MrROY