2015-11-07 23 views
32

public void setTextAppearance (Bağlam kapsamı, int artığı) API seviyesi 1
Bu yöntem, bunun yerine API seviyesi 23. kullanımı setTextAppearance (int) içinde kaldırıldı içinde Eklendi.setTextAppearance 23

Benim Soru: Neden kullanımdan kaldırıldı? Neden artık Context'a ihtiyaç duymuyor? Ve en önemlisi, eski sürümleri için setTextAppearance(int resId) nasıl kullanılır?

+0

You eski sürümü için bunu yapabilirsin sadece Build.VERSION.SDK_INT' kontrol eder Pankaj

cevap

48
  1. Eski sürümler için setTextAppearance(int resId) nasıl kullanılır?

    böyle kullanın:

    if (Build.VERSION.SDK_INT < 23) { 
        super.setTextAppearance(context, resId); 
    } else { 
        super.setTextAppearance(resId); 
    } 
    

    Daha fazla bilgi için: o niye https://stackoverflow.com/a/33393762/4747587

  2. kaldırıldığı? Neden artık Bağlam'a ihtiyaç duymuyor?

    Bunun neden kullanım dışı bırakıldığının nedeni, context kodunu geçmeye gerek olmamasıdır. View tarafından sağlanan varsayılan içeriği kullanır. Aşağıdaki kaynak koduna bakın. Bunu açıklamalı.

    public void setTextAppearance(@StyleRes int resId) { 
        setTextAppearance(mContext, resId); 
    } 
    

    burada mContextView sınıfı tanımlanmıştır. Yani artık bu yönteme bir Context geçirmeniz gerekmiyor. TextView, oluşturulduğu sırada sağlanan içeriği kullanacaktır. Bu daha mantıklı.

GÜNCELLEME

Bu işlevsellik Destek Kütüphanesi parçası olarak eklenir. Yani TextView yerine, TextViewCompat [documentation] kullanın. Bununla birlikte, ImageViewCompat gibi tanıtılan başka sınıflar da vardır. Sen destek kitaplığından TextViewCompat kullanabilirsiniz

+17

Bu korkunç, neden ContextCompat sınıfının bir parçası olarak setTextAppearance eklemediniz? Artık tüm setTextAppearance yöntemlerimizi sarmalı veya müşteri kodumuzda onaylanmamış kod hatası riskini çalıştırmalıyız. – worked

+9

@worked cevabımı bakın: http://stackoverflow.com/a/37028325/2613692 Bu soru yayınlanmadan önce yöntemi TextViewCompat sınıfına eklediler. – RustamG

+0

Güzel! Teşekkürler @RustamG – worked

İlgili konular