2016-04-10 8 views
0

タブ付きのアクティビティを持つアプリケーションでは、textViewとlogcat(どのタブを選択しているかを示すメッセージ)に簡単なメッセージを送ります。Android:タブ付きアプリケーションでは、TextViewの出力はLogCatと一貫していません

ただし、textViewには正しい文字列が表示されますが、logcatには異なる文字列が表示されます。

手順この問題を再現するために非常に単純です:

  1. スタート新しいAndroid Studioプロジェクト(私のAndroid Studioバージョン:1.5.1)

  2. (例えばMyApplicationを任意のアプリケーションの名前を付けて)

  3. "電話とタブレット"のみを選択してください。

  4. を選択し、 "タブ付きアクティビティ"

  5. ナビスタイル "(ビューポケットベル付き)アクションバータブ" を選択してください

  6. クリックして、これを生成し、プロジェクトをビルドします

を終えます。このアプリケーションを実行すると、最初のタブに「Hello World from section:1」、2番目に「Hello World from section:2」、3番目のタブに「Hello World from section:3」という文字列が表示されます。

さて、

textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));

は、この行を追加し、 MainActivity.javaにだけ(それはのTextViewに文字列を送信する)この線より下の方法 onCreateViewclass PlaceholderFragmentの)に行く

Log.i("onCreateView", "From tab number: " + getArguments().getInt(ARG_SECTION_NUMBER));

予想される動作:

textViewとlogcatの両方で、タブをタップしたときと同じメッセージが表示されるはずです。

実際の行動:

TextViewには、正しい文字列を示しています。しかし、logcatでは、表示されているタブ番号が正しくないため、textView出力と一致しません。

私は自分の文字列を形成してのTextViewに渡すしようとしたとき、これは確かに奇妙であり、すべての高さは、これに代えて、で、LogCat

 String strMessage = "Msg from tab number: " + getArguments().getInt(ARG_SECTION_NUMBER); 
     textView.setText (strMessage); 
     Log.i("onCreateView", strMessage); 

それはまだ同じ動作を持っているつまりはTextViewの中に正しい文字列を示しています関連するタブは表示されますが、Logcatは完全に異なるタブ番号を示します。私は同じ文字列を送信していますが、番号の変更だけです???

答えて

0

これは私自身の根本的な原因です。 onCreateViewで呼び出されたtextView.setTextのように見えますが、テキスト値が設定されて以降変更されることはありません。どのタブが現在アクティブか可視かを調べて、その内容を更新できるようにしたいと思っていました。タブが見えるときにonCreateViewが呼び出されるという誤った印象を受けました。最後に私はthis私の問題を解決した答えを見つけた。

関連する問題