2015-03-20 25 views
11

Ben mesajı almaya çalıştı ve şu kod satırı çalışır:AlertDialog başlığı nasıl alınır?

TextView dialogMessage = (TextView)dialogObject.findViewById(android.R.id.message); 

Ama null

TextView dialogTitle = (TextView)dialogObject.findViewById(android.R.id.tittle); 
+0

id daha sonra txt uyumsuz eklenen çünkü ben de önceden ayarlanmış başlığı okumak 'alertTitle', Zor dışında visibile olduğundan emin değilim. Ile deneyin android.R.id.alertTitle' – Blackbelt

+0

hiçbir id alertTitle – alitha

cevap

22

döndüren aşağıdaki satırı kullanarak başlık almaya çalıştığımda kodu kontrol AlertDialog. Dahili olarak AlertDialog başlığının TextView başlamasını R.id.alertTitle kullanırlar. Bunu almak için getIdentifier kullanabilirsiniz:

int titleId = getResources().getIdentifier("alertTitle", "id", "android"); 
if (titleId > 0) { 
    TextView dialogTitle = (TextView) dialogObject.findViewById(titleId); 
    if (dialogTitle != null) { 

    } 
} 
+2

Bu çalıştı teşekkürler :) – alitha

+2

İnsanlar mümkün olmasa bile, bu harika bir cevaptır. Siyah kuşak hak ediyorsun, çok teşekkürler. – smoothumut

+0

Mesaj almak için benzer android-fu var mı? :) –

0

Bu eski bir yazı olduğunu biliyorum ama kabul cevabı kullanılmış ve bana faydası başka bir şey ekledi. Aşağıdaki kodu kullanarak Dialog başlığı çok satırlı (varsayılan 1 satır) yapabilirsiniz. Kullandığım ContentLoaders

int titleId = getResources().getIdentifier("alertTitle", "id", "android"); 
     if (titleId > 0) { 
      TextView dialogTitle = (TextView) getDialog().findViewById(titleId); 
      if (dialogTitle != null) { 
       dialogTitle.setMaxLines(4); 
       dialogTitle.setSingleLine(false); 
       String txt = dialogTitle.getText().toString(); 
       String txt1 = txt + ":\n\n" + "next line txt"; 
       dialogTitle.setText(txt1); 
      } 
     } 
İlgili konular