2016-09-30 9 views
1

メインアクティビティを入力するたびに、以下のコードが実行され、正常に動作します(つまり、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:私は第三条件にsetTextindexStatus.invalidate();を追加しました

は、いずれかの動作しません。

更新: 私はプレスhomeを押して言ったが、実際にはそのbackをスイッチアウトすると言った。 homeボタンスイッチの出入りがうまく動作します。

更新: ハンドラをグローバル変数として配置しようとしましたが、機能しませんでした。今私はbackイベントを無効にしました。

+0

これは興味深いことです。期待どおりに機能していないときに何が表示されているのか分かりますか? – LightYearsBehind

+0

'rebuildIndex()'が再び呼び出される場所に関する情報をもう少し与えることができますか?それは 'onResume()'からですか?実際にこのメソッドをトリガするものと、 'Handler'の' handleMessage() 'をトリガするものは何ですか? –

+0

'rebuildIndex'はアクティビティの' onStart'から呼び出され、メッセージは通常の文字列 'String'です – MrROY

答えて

0

TextViewには常にコードのこの部分に目に見える設定する必要がある場合:

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

次いでif一部を除去。

関連する問題