2016-04-08 11 views
0

İşte bir senaryo var, örneğin, bir görüntü düğmesi android olarak a_1 olarak adlandırılmış. variable = a_1 numaralı bir değişkende bu düğme adını saklamak istiyorum, böylece bir yönteme aktarabilirim ve bu yöntemde kullanabilirsiniz: variable.set_Image_Resource(...). Mümkün mü? Eğer öyleyse, fikirleriniz takdir edilecektir. Aksi takdirde, herhangi bir alternatif çözüm takdir edilecektir. Birçok platformda çok fazla arama yaptım ancak bir değişkende düğme metni saklamak dışında kullanışlı bir şey bulunamadı.Bir değişkende düğme adı nasıl saklanır? Bu sorguyu benim için zor bir tane buldum

Böyle bir sorunun nedeni, uygulamamda 64 Resim Düğmesi var ve 32 düğmenin üzerinde anahtar deyim olduğu bir senaryo var. 32 anahtarlı 64 düğmeyi uygulamaya devam edersem ve her bir anahtarın 32 kasası varsa, bu çılgın bir yaklaşım olacaktır. Öyleyse, yapmak istediğim sadece tek bir anahtara sahip olmak istediğim, sadece düğmeyi geçirdiğim ve buton niteleyicisini kullanmak yerine button_name.something() bu parametreyi kullanabiliyorum, yani parameter.something().

Bu sorunu uygulamaya koymanın birçok yolu olduğunu biliyorum, ancak bu sorunu bu şekilde çözmem gerekiyor.

+0

Anahtar deyimini kullanmanız gerekir. –

+0

@GaurawYadav Üzgünüm, sanırım problemimi açıkça yazmamıştım. Ben zaten switch deyimini kullanıyorum ama bu çok fazla. lütfen sorumu anla. teşekkür ederim –

+0

Başka bir yolu yoktu, 64 tuşlarını kullanarak kendisi çok fazla. –

cevap

1

Bu düğmeyi tüm düğmelerinizi aynı ClickListener'a bağlayarak çözebileceğinizi düşünüyorum, bu nedenle düğmenin kimliğini dize olarak almak zorunda kalmazsınız. Bu dinleyicinin içinde anahtarınızı alabilirsin. Burada bir clickListener sınıfı oluşturmak nasıl bir örnek: etkinlik onCreate günü

public class MyListener implements View.OnClickListener { 

    public final static String TAG = "ListenerTAG_"; 

    MainActivity context; 

    public MyListener(MainActivity context){ 
     this.context = context; 
    } 

    @Override 
    public void onClick(View v) { 
     Button b = (Button) v; 
     // Do stuff with the pushed button 
    } 
} 

, bu dinleyici örneğini beyan ve her düğmenin ekleyin.

Yardım edin.

+0

şu ana kadar iyi bir yaklaşım gibi görünüyor. Teşekkürler bir ton arkadaşım :) –

0

Sorunuzu anladım mı bilmiyorum, ancak tüm Düğmeler Kimliği/metnini almak istiyorsanız bu kodu yapmanız gerekir.

LinearLayout layout = (LinearLayout) findViewById(R.id.layout); 

for(int i=0; i < layout.getChildCount(); i++) 
{ 
    View v = layout.getChildAt(i); 

    if (v instanceof Button) { 
     Button b = (Button) v; 
     Log.d("GORIO", "ID: " + b.getId()); 
     Log.d("GORIO", "Button Text: " + b.getText()); 
    } 
} 
+0

iyi görünüyor, ben bir deneyin vereceğim :) Teşekkürler dostum –

0

Başka zarif yolu bir XML görünümü tanımı üzerinden bu düğmeleri değil beyan etmek olabilir ama programlı addView(...) aracılığıyla kapsayan görünümüne ekleyerek olacaktır. Böylelikle onları bir dizi veya listede düzenleyebilir ve sadece üzerinde yineleyebilirsiniz.

+0

Bu iyi bir teknik ama ben XML olarak her şeyi yapmak zorunda olacak şekilde uygulamak için varsayalım sözü gibi . her neyse öneriniz takdir edilir :) –

+0

Senin acını anlıyorum. Her şeyin XML olması gerektiği konusunda görüşmek isterim. Android'deki görünümleri tanımlamanın programlı yolu, oldukça fazla avantaj sunar ve hem literatürde hem de uygulamada ihmal edilir. – TAM