2016-08-09 16 views
0

SetText()を使用してテキストを入力するアクティビティ(フラグメントではありません)に、TextViewオブジェクトがあります。ある時点では、TextViewオブジェクトの可視性をView.GONEに変更します。その後、TextViewオブジェクトの可視性がView.VISIBLEに設定されていると、動的に設定されたテキストはTextViewに表示されません。 Logを使って何が起こったのか理解しようとしたところ、TextViewオブジェクトの内容が空文字列であることが分かりました。したがって、私の質問は、TextViewオブジェクト内のテキストに何が起こるのか、その可視性がView.GONEに設定されているか?可視性がView.GONEに設定されている場合、TextViewオブジェクトのテキストはどうなりますか?

あらすじ: -View.GONEへの可視性>変更-

フィルテキストsetText()のTextView使用に>getText()戻り空の文字列

- >View.VISIBLE視界を変更

質問:なぜですか? setVisibility()

+0

'onCreateView()'がもう一度呼び出されないのは確かですか? – Shaishav

+1

View.GONEはそうしてはいけません。ビューを見えなくするだけです(スペースをとらない)。あなたは、テキストビューを使用している場所でコードを投稿できますか? – cuoka

+0

ルーキーミスでした。他の要素が重なっているため、TextViewの可視性がビューから隠されていました。 – tpk

答えて

2

Viewクラスのメソッドで、ドキュメントは、視認性がView.GONEに設定されているときと述べている:

このビューには見えない、そしてそれは、レイアウト の目的のために任意のスペースを取りません。

したがって、Viewインスタンス(ここでTextViewオブジェクト)が非常に生きていると繁栄であり、破壊されるそのプライベートフィールド(TextViewの場合mText)のための理由はありません。レイアウトマネージャーには見えません。あなたのケースでは、上記の動作の原因の1つは、onCreateView()の呼び出しを介してTextViewオブジェクトの可能性の高い再初期化です。

+0

View.INVISIBLEはどうですか? 私のアプリケーションでは、プログラムで操作できるものが必要ですが、ユーザーには表示されません。 – Swarnveer

1

Textviewは表示されず、レイアウト目的でスペースをとらない。 データの損失はありません。レイアウト目的でスペースを獲得することなく、見えなくなります。コード内では他のsetText()操作である必要があります。また、TextViewオブジェクトを再作成することもできます。

関連する問題