Mehrere Bild-Tasten

Erstellte ich eine Tätigkeit, die auf android-studio und ich habe dort so etwas wie 20 ImageButtons. Ich möchte es zu benutzen, da bei jedem Klick auf ein Bild wird es zu bewegen, um eine neue Aktivität. Alle Bild-Tasten arbeiten nach dem gleichen Prinzip, meine app ist ein Spiel, und jedes Bild stellt eine Ebene. Ich möchte, um eine Funktion, die verwendet werden auf alle Tasten und bewegt den Benutzer zu einer neuen Tätigkeit nach den Daten(die Eigenschaften des image-Taste) und verwenden, dass die Daten auf die neue Tätigkeit. Jede Ebene hat Ihre eigene Aktivität und die Haupttätigkeit ist das Menü des Spiels.

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); } }); }
  • Bitte geben Sie Ihren code ein.
  • public ImageButton levelCall; public void CallLevel(){ levelCall=(ImageButton)findViewById(R.id.level1); levelCall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent toy = new Intent(Levels.this,Level1.class); startActivity(toy); } }); }
  • Bearbeiten können Sie die Frage und fügen Sie diesen code in Ihre ursprüngliche Frage. Das verbessert die Lesbarkeit und Formatierung.
InformationsquelleAutor R.Jiny | 2017-02-24



3 Replies
  1. 1

    Benötigen Sie mehr Informationen und code. Allerdings möchten Sie vielleicht, um zu versuchen, legen Sie eine deutliche onClickListener und legen Sie dann alle imageButtons zu dieser listener wird eine Aktion durchführen, je nachdem auf die Schaltfläche geklickt wird. Zum Beispiel, sagen, Sie haben 4 imageButtons und Sie möchten, führen Sie eine andere Aktion (in deinem Fall, starten Sie eine neue Aktivität) für jede andere Schaltfläche klicken.

    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);

    Dies wird vorausgesetzt, Sie haben die imageButtons in Ihrer layout-Datei und Sie haben Sie initialisiert in Ihrer Aktivität.

    In Ihre neue Tätigkeit bekommen Sie die Meldung als solche:

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

    Können Sie auch überprüfen Sie heraus dieses Dokumentation für weitere Informationen über intents.

    • Ich denke, es kann helfen. Aber ich brauche auch die Daten in die neue Tätigkeit, ich meine ich möchte eine Aktivität, die wird, sein Aussehen zu ändern, nach denen ImageButton schickte mich zu ihm.
    • Sie können eine zusätzliche intent.putExtra(EXTRA_MESSAGE, message); Daten senden, um Ihre nächste Aktivität und basierend auf den Daten, können Sie sich telefonisch an verschiedenen Fragmente oder etwas in Ihrer neuen Tätigkeit.
    • Ich aktualisiert meine Antwort zu gehören das senden von Daten. Sie können die Daten anpassen, die je nachdem, auf welche Schaltfläche geschickt Sie es und verwenden Sie es in Ihrer neuen Tätigkeit. Funktioniert diese Hilfe?
    • OK danke, ich werde das ausprobieren!
    • Lassen Sie uns wissen, wenn es Probleme gibt und wenn das hilft, tun, markieren Sie diese als die richtige Antwort.
    • Ich habe ein problam mit der Zeile: String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); Es nicht erkennt die EXTRA_MESSAGE auch wenn ich importiert haben. Weißt du, was ist das problam?
    • Hast du EXTRA_MESSAGE in deiner mainActivity? Wie in intent.putExtra(EXTRA_MESSAGE, message);? Vielleicht die erste Aktivität wird mit dem Namen etwas anderes in Ihrer app, und versuchen Sie, die Namen, wenn Sie anrufen EXTRA_MESSAGE in Ihrer zweiten Tätigkeit als in String message = intent.getStringExtra(YourFirstActivity.EXTRA_MESSAGE);
    • Das ist, wie ich schrieb und es nicht erkennen das EXTRA_MESSAGE in der neuen Tätigkeit
    • Wissen Sie, warum ist es passiert?
    • Man muss hinzufügen, EXTRA_MESSAGE als öffentliche Schlüssel in der ersten Aktivität. Zum Beispiel vor der onCreate in Ihrer ersten Aktivität, fügen Sie diese: public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; so dass Sie erreichen es mit der zweiten Aktivität.
    • Es funktioniert!! Vielen Dank
    • Wenn es funktioniert, tun upvote und wählen Sie diese als die richtige Antwort.

  2. 0

    So etwas? In Ihrer xml-machen Sie Ihre Bilder anklickbar und geben Sie diese ID ist so…

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

    Rufen dann eine Funktion wie diese in Ihrer Aktivität 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));
            }
        });
    }
  3. 0

    Könnten Sie weisen ein tag über android: – tag, um jede der Ansichten und verwenden Sie dann Ihre einzigen Zuhörer schalten Sie die Ansicht tag zu ast, das Verhalten, das Sie möchten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.