リスナーが追加されていない場合でもグローバルレイアウトリスナーが追加されます。この状況ではループします。グローバルレイアウトリスナをループで実行せずに属性を編集するにはどうすればよいですか?この種のあなたのアンドロイドでAndroidグローバルレイアウトリスナーを繰り返し呼び出す
final View getDecorView = activity.getWindow().getDecorView();
getDecorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT > 16) {
getDecorView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
getDecorView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
final TextView textView3 = (TextView) decorView.findViewById(2131558456);
if (textView3 != null) {
textView3.setText("updated"); textView3.setBackgroundColor(Color.parseColor("#444444"));
}
getDecorView.getViewTreeObserver().addOnGlobalLayoutListener(this);
}
});
変更 'getDecorView.getViewTreeObserver()addOnGlobalLayoutListener(この)解決;' 'getDecorView.getViewTreeObserver()removeOnGlobalLayoutListener(これ)にし;'あなた 'onGlobalLayout()'内部 – NSimon
@ NicolasSimonは正しいです、あなたはそれぞれの呼び出しの最後に 'GlobalLayoutListener'を付け直しています。なぜそれが繰り返し呼び出されるのかです。その行を削除します。 – roarster
@roarsterそれは私が実際にやりたがっているものですが、テキストを設定する以外は解雇したいので、それを取り除いた後にリスナーを付ける理由はどうすれば実現できますか?ありがとうございました。 – Mike