2011-10-12 15 views
24

Özel bir görünümüm var ve etkinliğinde bulunan bir Dizeye erişmek istiyorum. Görünüm sınıfında getContext() kullanan kod görmüştüm, ancak bir amaç aracılığıyla etkinliğinde kullanılabilir olan String'e erişmek için bir yöntem yoktur. Özel görünümüne uygun bir etkinlikte Dize nasıl oluşturulur?Özel görünüm, etkinliğine nasıl erişebilir?

cevap

30

Görünüm sınıf dönüşlerinde getContext() yöntemi yapıcı üzerinde geçirilen bağlam. Genellikle istediğiniz etkinlik budur (Etkinlik, İçeriği genişletir). Yani bu muhtemelen sizin için çalışır:

((Activity)getContext()).someMethod(...); 
+1

simao mükemmel, çok teşekkürler. – turtleboy

+9

Görünümün doğrudan Etkinlik tarafından oluşturulduğu durumlar için iyi bir çözümdür. Bu her zaman böyle değildir. Görünüm bir İletişim Kutusu veya bir PopupWindow görünümüyse, daha sonra bir Etkinlik olarak bağlamı dökmek – EyalBellisha

+0

hatasıyla sonuçlanır. @EyalBellisha'nın belirttiği gibi, bu her zaman işe yaramayabilir. Örneğin, android.support.v * 'dizininden genişletildiğinde, içerik sarılı uyumluluk widget'ları söz konusu olduğunda, getContext() işlevi, Etkinlik türünde olmayacaktır. Örneğin, AppCompatButton için, TintContextWrapper türünde ve Etkinliğe yayınlanamaz. –

-5

Hala java ve android için noob var, bu yüzden işe yaramayabilir, ama sadece yardım etmeye çalışıyorum.

Örneğin, "putExtra" ve "getExtra" seçeneğini kullanarak Intents'in/faaliyetlere parametrelerinde geçmesi gerekir: "onCreate" in Ardından

Intent EditDebtActivity = new Intent(getBaseContext(), EditDebt.class); 
     EditDebtActivity.putExtra(DbAdapter.KEY_ROWID,dRowID); 
     EditDebtActivity.putExtra(DbAdapter.KEY_DEBT, dName); 
     EditDebtActivity.putExtra(DbAdapter.KEY_STARTINGAMOUNT, dStartAmount); 
     EditDebtActivity.putExtra(DbAdapter.KEY_CURRENTAMOUNT, dCurrentAmount); 
     EditDebtActivity.putExtra(DbAdapter.KEY_DUEDATE, dDueDate); 
     EditDebtActivity.putExtra(DbAdapter.KEY_INTERESTRATE, dInterestRate); 
     EditDebtActivity.putExtra(DbAdapter.KEY_MINPAYMENT, dMinPayment); 
     startActivity(EditDebtActivity); 

: ana etkinlikte

Bundle extras = getIntent().getExtras(); 
    dRowID = extras.getLong(DbAdapter.KEY_ROWID); 
    String rowidname = extras.getString(DbAdapter.KEY_DEBT); 
    currentamount = extras.getDouble(DbAdapter.KEY_CURRENTAMOUNT); 
    startingamount = extras.getDouble(DbAdapter.KEY_STARTINGAMOUNT); 
    duedate = extras.getInt(DbAdapter.KEY_DUEDATE); 

açıkçası benim kendi kodunu kullandım, ancak bir kullanıcı bir düğmeye tıkladığında yeni bir faaliyet içine satır bilgilerini geçirerek: yeni görünümde metot, aşağıdaki kullanın.

putextra ve getextra kullanımıyla ilgili daha fazla bilgi için bu SO bağlantısına bakın: Bu yardımcı olur Sending arrays with Intent.putExtra

Umut, bu benim ilk katkı topluluğunun :) geri var

+0

R Merhaba tahnks ilk katkılarından dolayı :) i kökünde jpeg dosya adlarını listeleyen bir liste görünümü var. Kullanıcı seçtiğinde, bu dosya adında bir niyetle tetikler. Kayıt aktivitesi dosya adını alabilir, ancak özel bir görünüm olan görünüm dosya adına erişemez. Teşekkürler. – turtleboy

İlgili konular