2016-04-08 8 views
0

Hier ist ein Szenario, zum Beispiel habe ich eine Image Button als a_1 in Android benannt. Ich möchte diesen Knopfnamen in einer Variablen speichern, d. H. variable = a_1, so dass ich sie an eine Methode übergeben und sie in diesem Verfahren verwenden kann, d. H. variable.set_Image_Resource(...). Ist das möglich? Wenn ja, werden Ihre Ideen geschätzt. Wenn nicht, wird jede alternative Lösung geschätzt. Ich habe auf vielen Plattformen viel gesucht, aber nichts nützliches gefunden, außer Knopftext in einer Variablen zu speichern.Wie speichert man einen Knopfnamen in einer Variablen? Ich fand diese Abfrage eine anspruchsvolle für mich

Der Grund für eine solche Frage ist, ich habe 64 Bild-Buttons in meiner Anwendung und es gibt ein Szenario, wo 32-Tasten eine switch-Anweisung auf ihnen haben. Wenn ich alle 64-Tasten mit 32 Schaltern implementieren will und jeder Schalter 32 Kästen hat, wird das ein verrückter Ansatz sein. Also, was ich tun möchte, ist, ich möchte nur eine Methode, die nur einen Schalter haben, in denen ich die Taste übergeben und anstelle der Verwendung der Schaltfläche Qualifier, d. H. button_name.something() kann ich diesen Parameter verwenden, d. H. parameter.something().

Ich weiß, es gibt viele andere Möglichkeiten, dieses Problem zu implementieren, aber ich soll dieses Problem auf diese Weise lösen.

+0

Sie müssen switch-Anweisung verwenden. –

+0

@GaurawYadav Es tut mir leid, ich glaube, ich habe mein Problem nicht klar geschrieben. Ich benutze bereits Switch-Anweisung, aber das sind zu viele. Bitte verstehe meine Frage. danke –

+0

Ich tat es gibt keinen anderen Weg, mit 64 Tasten selbst ist zu viel. –

Antwort

1

Ich glaube, Sie können dieses Problem lösen, indem Sie alle Ihre Schaltflächen an denselben ClickListener binden, so dass Sie die ID der Schaltfläche nicht als Zeichenfolge abrufen müssen. In diesem Listener können Sie Ihren Schalter haben. Hier ist ein Beispiel dafür, wie man eine Klasse clicklistener erstellen:

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 
    } 
} 

Auf der onCreate Ihrer Tätigkeit erklären Sie eine Instanz dieses Zuhörer, und fügen Sie jede Taste.

Ich hoffe, es hilft.

+0

scheint ein guter Ansatz so weit. Vielen Dank eine Kumpel :) –

0

Ich weiß nicht, ob ich Ihre Frage verstanden habe, aber wenn Sie alle Buttons Id/Text erhalten möchten, müssen Sie diesen Code tun.

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

sieht gut aus, ich werde es versuchen :) Danke Kumpel –

0

Eine weitere elegante Möglichkeit wäre, diese Tasten nicht über eine XML-View-Definition zu erklären, aber programmatisch von ihnen zu dem einschließenden Blick über addView(...) hinzufügen. Auf diese Weise können Sie sie in einem Array oder einer Liste organisieren und einfach über sie hinweg iterieren.

+0

Dies ist eine gute Technik, aber wie ich erwähnte, dass ich es so implementieren soll, dass ich alles in XML machen muss . Wie auch immer, dein Vorschlag wird geschätzt :) –

+0

Ich verstehe deine Schmerzen. Ich würde gerne mit jedem diskutieren, der verlangt, dass alles XML sein soll. Der programmatische Weg, Ansichten in Android zu definieren, bietet viele Vorteile und wird sowohl in der Literatur als auch in der Praxis vernachlässigt. – TAM

Verwandte Themen