2017-02-24 2 views
0

Ich habe eine Aktivität auf Android Studio erstellt und ich habe dort etwas wie 20 ImageButton s gesetzt. Ich möchte es verwenden, da bei jedem Klick auf ein Bild eine neue Aktivität angezeigt wird. Alle Bildknöpfe funktionieren nach dem gleichen Prinzip, meine App ist ein Spiel und jedes Bild repräsentiert eine Ebene. Ich möchte eine Funktion erstellen, die für alle Schaltflächen verwendet wird und den Benutzer gemäß den Daten (den Eigenschaften der Schaltfläche "Bild") in eine neue Aktivität versetzen und diese Daten für die neue Aktivität verwenden. Jedes Level hat seine eigenen Aktivitäten und die Hauptaktivität ist das Menü des Spiels.Multiple Image Buttons

Unten ist mein Code:

public ImageButton beatsCall; public void Beats(){ beatsCall=(ImageButton)findViewById(R.id.beats); beatsCall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent toy = new Intent(Levels.this,Beats.class); startActivity(toy); } }); } 
+1

Bitte geben Sie Ihren Code ein. –

+0

'public ImageButton levelCall; öffentliche void CallLevel() { levelCall = (ImageButton) findViewById (R.id.level1); levelCall.setOnClickListener (neu View.OnClickListener() { @Override public void onClick (Blick v) { Intent Spielzeug = new Intent (Levels.this, Level1.class); startActivity (Spielzeug); } }); } ' –

+0

Können Sie die Frage bearbeiten und diese als Code in Ihrer ursprünglichen Frage hinzufügen. Dies verbessert die Lesbarkeit und Formatierung. – skbrhmn

Antwort

1

Sie benötigen weitere Informationen und Code zur Verfügung zu stellen. Sie können jedoch versuchen, einen eindeutigen onClickListener festzulegen und dann alle ImageButtons auf diesen Listener zu setzen, der abhängig von der angeklickten Schaltfläche eine Aktion ausführt. Angenommen, Sie haben 4 imageButtons und möchten für jeden Klick auf eine andere Aktion eine andere Aktion ausführen (in Ihrem Fall eine neue Aktivität starten).

View.OnClickListener listener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.button1: 
       //Start activity 1 here, for example 
       Intent intent = new Intent(this, YourNewActivity1.class); 
       String message = v.getId().toString; 
       intent.putExtra(EXTRA_MESSAGE, message); 
       startActivity(intent); 
       break; 
      case R.id.textView2: 
       //Start activity 2 here 
       break; 
      case R.id.textView3: 
       //Start activity 3 here 
       break; 
      case R.id.textView4: 
       //Start activity 4 here 
     } 

    } 
}; 

button1.setOnClickListener(listener); 
button2.setOnClickListener(listener); 
button3.setOnClickListener(listener); 
button4.setOnClickListener(listener); 

Vorausgesetzt, Sie haben die imageButtons in Ihrer Layoutdatei eingerichtet und Sie haben sie in Ihrer Aktivität initialisiert.

In Ihrer neuen Tätigkeit, können Sie die Nachricht als solche erhalten:

Intent intent = getIntent(); 
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
if (some condition with message){ 
     do something 
} 

Sie auch diese documentation für weitere Informationen in Bezug auf Absichten Check-out.

+0

Ich denke, es kann helfen. Aber ich muss auch die Daten in der neuen Aktivität verwenden, ich meine, ich möchte eine Aktivität haben, die ihr Aussehen entsprechend ändert, nach dem ImageButton mich dorthin geschickt hat. –

+0

Sie können eine zusätzliche 'intent.putExtra (EXTRA_MESSAGE, message);' verwenden, um Daten an Ihre nächste Aktivität zu senden und basierend auf den Daten können Sie verschiedene Fragmente aufrufen oder etwas in Ihrer neuen Aktivität tun. – skbrhmn

+0

Ich habe meine Antwort aktualisiert, um das Senden von Daten einzuschließen. Sie können die Daten abhängig von der Schaltfläche anpassen und in Ihrer neuen Aktivität verwenden. Hilft das? – skbrhmn

0

So ähnlich? In Ihrem xml Ihre Bilder anklickbar machen und ihnen IDs wie dieses geben ...

<ImageView 
      android:id="@+id/level_1_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:clickable="true" 
      /> 

dann so eine Funktion aufrufen in Ihrer Aktivität des onCreate

private void setupButtons() { 
    findViewById(R.id.level_1_button).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(getApplication(), LevelOne.class)); 
     } 
    }); 

    findViewById(R.id.level_2_button).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(getApplication(), LevelTwo.class)); 
     } 
    }); 
} 
0

Sie einen Tag über Android zuordnen könnte: Tag jede Ihrer Ansichten und verwenden Sie dann Ihren einzelnen Listener, um das Tag der Ansicht zu aktivieren, um das gewünschte Verhalten zu verzweigen.