zwei unterschiedliche Klicklisener

  • Antworten:6
  • Bentwortet
Robbiani Renato
  • Forum-Beiträge: 602

22.03.2020, 20:49:42 via Website

Hallo zusammen

Ich habe zwei unterschiedliche Klicklisener. Die vertragen sich offensichtlich nicht.

package ch.robbisoft.nimapp;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private ImageView img_einseins;
private ImageView img_einszwei;
private ImageView img_einsdrei;
private ImageView img_einsvier;
private ImageView img_einsfuenf;
private ImageView img_einssechs;
private ImageView img_einssieben;
private ImageView img_einsacht;
private ImageView img_einsneun;

private ImageView img_zweieins;
private ImageView img_zweizwei;
private ImageView img_zweidrei;
private ImageView img_zweivier;
private ImageView img_zweifuenf;
private ImageView img_zweisechs;
private ImageView img_zweisieben;
private ImageView img_zweiacht;
private ImageView img_zweineun;


private ImageView img_dreieins;
private ImageView img_dreizwei;
private ImageView img_dreidrei;
private ImageView img_dreivier;
private ImageView img_dreifuenf;
private ImageView img_dreisechs;
private ImageView img_dreisieben;
private ImageView img_dreiacht;
private ImageView img_dreineun;

private ImageView img_viereins;
private ImageView img_vierzwei;
private ImageView img_vierdrei;
private ImageView img_viervier;
private ImageView img_vierfuenf;
private ImageView img_viersechs;
private ImageView img_viersiben;
private ImageView img_vieracht;
private ImageView img_vierneun;

private ImageView img_fuenfeins;
private ImageView img_fuenfzwei;
private ImageView img_fuenfdrei;
private ImageView img_fuenfvier;
private ImageView img_fuenffuenf;
private ImageView img_fuenfsechs;
private ImageView img_fuenfsieben;
private ImageView img_fuenfacht;
private ImageView img_fuenfneun;

private ImageView img_sechseins;
private ImageView img_sechszwei;
private ImageView img_sechsdrei;
private ImageView img_sechsvier;
private ImageView img_sechsfuenf;
private ImageView img_sechssechs;
private ImageView img_sechssieben;
private ImageView img_sechsacht;
private ImageView img_sechsneun;

private AlertDialog.Builder dlg_schale;
private Button obj_spiel;

private int n_schale;
private int n_anzahl;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    n_schale = 0;
    n_anzahl = 0;

    img_einseins = findViewById(R.id.img_eins_eins);
    img_einseins.setTag(R.id.loesch, false);
    img_einseins.setTag(R.id.schale, 1);
    img_einseins.setOnClickListener(this);

    img_einszwei = findViewById(R.id.img_eins_zwei);
    img_einszwei.setTag(R.id.loesch, false);
    img_einszwei.setTag(R.id.schale, 1);
    img_einszwei.setOnClickListener(this);

    img_einsdrei = findViewById(R.id.img_eins_drei);
    img_einsdrei.setTag(R.id.loesch, false);
    img_einsdrei.setTag(R.id.schale, 1);
    img_einsdrei.setOnClickListener(this);

    img_einsvier = findViewById(R.id.img_eins_vier);
    img_einsvier.setTag(R.id.loesch, false);
    img_einsvier.setTag(R.id.schale, 1);
    img_einsvier.setOnClickListener(this);

    img_einsfuenf = findViewById(R.id.img_eins_fuenf);
    img_einsfuenf.setTag(R.id.loesch, false);
    img_einsfuenf.setTag(R.id.schale, 1);
    img_einsfuenf.setOnClickListener(this);

    img_einssechs = findViewById(R.id.img_eins_sechs);
    img_einssechs.setTag(R.id.loesch, false);
    img_einssechs.setTag(R.id.schale, 1);
    img_einssechs.setOnClickListener(this);

    img_einssieben = findViewById(R.id.img_eins_sieben);
    img_einssieben.setTag(R.id.loesch, false);
    img_einssieben.setTag(R.id.schale, 1);
    img_einssieben.setOnClickListener(this);

    img_einsacht = findViewById(R.id.img_eins_acht);
    img_einsacht.setTag(R.id.loesch, false);
    img_einsacht.setTag(R.id.schale, 1);
    img_einsacht.setOnClickListener(this);

    img_einsneun = findViewById(R.id.img_eins_neun);
    img_einsneun.setTag(R.id.loesch, false);
    img_einsneun.setTag(R.id.schale, 1);
    img_einsneun.setOnClickListener(this);

    img_zweieins = findViewById(R.id.img_zwei_eins);
    img_zweieins.setTag(R.id.loesch, false);
    img_zweieins.setTag(R.id.schale, 2);
    img_zweieins.setOnClickListener(this);

    img_zweizwei = findViewById(R.id.img_zwei_zwei);
    img_zweizwei.setTag(R.id.loesch, false);
    img_zweizwei.setTag(R.id.schale, 2);
    img_zweizwei.setOnClickListener(this);

    img_zweidrei = findViewById(R.id.img_zwei_drei);
    img_zweidrei.setTag(R.id.loesch, false);
    img_zweidrei.setTag(R.id.schale, 2);
    img_zweidrei.setOnClickListener(this);

    img_zweivier = findViewById(R.id.img_zwei_vier);
    img_zweivier.setTag(R.id.loesch, false);
    img_zweivier.setTag(R.id.schale, 2);
    img_zweivier.setOnClickListener(this);

    img_zweifuenf = findViewById(R.id.img_zwei_fuenf);
    img_zweifuenf.setTag(R.id.loesch, false);
    img_zweifuenf.setTag(R.id.schale, 2);
    img_zweifuenf.setOnClickListener(this);

    img_zweisechs = findViewById(R.id.img_zwei_sechs);
    img_zweisechs.setTag(R.id.loesch, false);
    img_zweisechs.setTag(R.id.schale, 2);
    img_zweisechs.setOnClickListener(this);

    img_zweisieben = findViewById(R.id.img_zwei_sieben);
    img_zweisieben.setTag(R.id.loesch, false);
    img_zweisieben.setTag(R.id.schale, 2);
    img_zweisieben.setOnClickListener(this);

    img_zweiacht = findViewById(R.id.img_zwei_acht);
    img_zweiacht.setTag(R.id.loesch, false);
    img_zweiacht.setTag(R.id.schale, 2);
    img_zweiacht.setOnClickListener(this);

    img_zweineun = findViewById(R.id.img_zwei_neuen);
    img_zweineun.setTag(R.id.loesch, false);
    img_zweineun.setTag(R.id.schale, 2);
    img_zweineun.setOnClickListener(this);

    img_dreieins = findViewById(R.id.img_drei_eins);
    img_dreieins.setTag(R.id.loesch, false);
    img_dreieins.setTag(R.id.schale, 3);
    img_dreieins.setOnClickListener(this);

    img_dreizwei = findViewById(R.id.img_drei_zwei);
    img_dreizwei.setTag(R.id.loesch, false);
    img_dreizwei.setTag(R.id.schale, 3);
    img_dreizwei.setOnClickListener(this);

    img_dreidrei = findViewById(R.id.img_drei_drei);
    img_dreidrei.setTag(R.id.loesch, false);
    img_dreidrei.setTag(R.id.schale, 3);
    img_dreidrei.setOnClickListener(this);

    img_dreivier = findViewById(R.id.img_drei_vier);
    img_dreivier.setTag(R.id.loesch, false);
    img_dreivier.setTag(R.id.schale, 3);
    img_dreivier.setOnClickListener(this);

    img_dreifuenf = findViewById(R.id.img_drei_fuenf);
    img_dreifuenf.setTag(R.id.loesch, false);
    img_dreifuenf.setTag(R.id.schale, 3);
    img_dreifuenf.setOnClickListener(this);

    img_dreisechs = findViewById(R.id.img_drei_sechs);
    img_dreisechs.setTag(R.id.loesch, false);
    img_dreisechs.setTag(R.id.schale, 3);
    img_dreisechs.setOnClickListener(this);

    img_dreisieben = findViewById(R.id.img_drei_sieben);
    img_dreisieben.setTag(R.id.loesch, false);
    img_dreisieben.setTag(R.id.schale, 3);
    img_dreisieben.setOnClickListener(this);

    img_dreiacht = findViewById(R.id.img_drei_acht);
    img_dreiacht.setTag(R.id.loesch, false);
    img_dreiacht.setTag(R.id.schale, 3);
    img_dreiacht.setOnClickListener(this);

    img_dreineun = findViewById(R.id.img_drei_neuen);
    img_dreineun.setTag(R.id.loesch, false);
    img_dreineun.setTag(R.id.schale, 3);
    img_dreineun.setOnClickListener(this);

    img_viereins = findViewById(R.id.img_vier_eins);
    img_viereins.setTag(R.id.loesch, false);
    img_viereins.setTag(R.id.schale, 4);
    img_viereins.setOnClickListener(this);

    img_vierzwei = findViewById(R.id.img_vier_zwei);
    img_vierzwei.setTag(R.id.loesch, false);
    img_vierzwei.setTag(R.id.schale, 4);
    img_vierzwei.setOnClickListener(this);

    img_vierdrei = findViewById(R.id.img_vier_drei);
    img_vierdrei.setTag(R.id.loesch, false);
    img_vierdrei.setTag(R.id.schale, 4);
    img_vierdrei.setOnClickListener(this);

    img_viervier = findViewById(R.id.img_vier_vier);
    img_viervier.setTag(R.id.loesch, false);
    img_viervier.setTag(R.id.schale, 4);
    img_viervier.setOnClickListener(this);

    img_vierfuenf = findViewById(R.id.img_vier_fuenf);
    img_vierfuenf.setTag(R.id.loesch, false);
    img_vierfuenf.setTag(R.id.schale, 4);
    img_vierfuenf.setOnClickListener(this);

    img_viersechs = findViewById(R.id.img_vier_sechs);
    img_viersechs.setTag(R.id.loesch, false);
    img_viersechs.setTag(R.id.schale, 4);
    img_viersechs.setOnClickListener(this);

    img_viersiben = findViewById(R.id.img_vier_sieben);
    img_viersiben.setTag(R.id.loesch, false);
    img_viersiben.setTag(R.id.schale, 4);
    img_viersiben.setOnClickListener(this);

    img_vieracht = findViewById(R.id.img_vier_acht);
    img_vieracht.setTag(R.id.loesch, false);
    img_vieracht.setTag(R.id.schale, 4);
    img_vieracht.setOnClickListener(this);

    img_vierneun = findViewById(R.id.img_vier_neun);
    img_vierneun.setTag(R.id.loesch, false);
    img_vierneun.setTag(R.id.schale, 4);
    img_vierneun.setOnClickListener(this);

    img_fuenfeins = findViewById(R.id.img_fuenf_eins);
    img_fuenfeins.setTag(R.id.loesch, false);
    img_fuenfeins.setTag(R.id.schale, 5);
    img_fuenfeins.setOnClickListener(this);

    img_fuenfzwei = findViewById(R.id.img_fuenf_zwei);
    img_fuenfzwei.setTag(R.id.loesch, false);
    img_fuenfzwei.setTag(R.id.schale, 5);
    img_fuenfzwei.setOnClickListener(this);

    img_fuenfdrei = findViewById(R.id.img_fuenf_drei);
    img_fuenfdrei.setTag(R.id.loesch, false);
    img_fuenfdrei.setTag(R.id.schale, 5);
    img_fuenfdrei.setOnClickListener(this);

    img_fuenfvier = findViewById(R.id.img_fuenf_vier);
    img_fuenfvier.setTag(R.id.loesch, false);
    img_fuenfvier.setTag(R.id.schale, 5);
    img_fuenfvier.setOnClickListener(this);

    img_fuenffuenf = findViewById(R.id.img_fuenf_fuenf);
    img_fuenffuenf.setTag(R.id.loesch, false);
    img_fuenffuenf.setTag(R.id.schale, 5);
    img_fuenffuenf.setOnClickListener(this);

    img_fuenfsechs = findViewById(R.id.img_fuenf_sechs);
    img_fuenfsechs.setTag(R.id.loesch, false);
    img_fuenfsechs.setTag(R.id.schale, 5);
    img_fuenfsechs.setOnClickListener(this);

    img_fuenfsieben = findViewById(R.id.img_fuenf_sieben);
    img_fuenfsieben.setTag(R.id.loesch, false);
    img_fuenfsieben.setTag(R.id.schale, 5);
    img_fuenfsieben.setOnClickListener(this);

    img_fuenfacht = findViewById(R.id.img_fuenf_acht);
    img_fuenfacht.setTag(R.id.loesch, false);
    img_fuenfacht.setTag(R.id.schale, 5);
    img_fuenfacht.setOnClickListener(this);

    img_fuenfneun = findViewById(R.id.img_fuenf_neun);
    img_fuenfneun.setTag(R.id.loesch, false);
    img_fuenfneun.setTag(R.id.schale, 5);
    img_fuenfneun.setOnClickListener(this);

    img_sechseins = findViewById(R.id.img_sechs_eins);
    img_sechseins.setTag(R.id.loesch, false);
    img_sechseins.setTag(R.id.schale, 6);
    img_sechseins.setOnClickListener(this);

    img_sechszwei = findViewById(R.id.img_sechs_zwei);
    img_sechszwei.setTag(R.id.loesch, false);
    img_sechszwei.setTag(R.id.schale, 6);
    img_sechszwei.setOnClickListener(this);

    img_sechsdrei = findViewById(R.id.img_sechs_drei);
    img_sechsdrei.setTag(R.id.loesch, false);
    img_sechsdrei.setTag(R.id.schale, 6);
    img_sechsdrei.setOnClickListener(this);

    img_sechsvier = findViewById(R.id.img_sechs_vier);
    img_sechsvier.setTag(R.id.loesch, false);
    img_sechsvier.setTag(R.id.schale, 6);
    img_sechsvier.setOnClickListener(this);

    img_sechsfuenf = findViewById(R.id.img_sechs_fuenf);
    img_sechsfuenf.setTag(R.id.loesch, false);
    img_sechsfuenf.setTag(R.id.schale, 6);
    img_sechsfuenf.setOnClickListener(this);

    img_sechssechs = findViewById(R.id.img_sechs_sechs);
    img_sechssechs.setTag(R.id.loesch, false);
    img_sechssechs.setTag(R.id.schale, 6);
    img_sechssechs.setOnClickListener(this);

    img_sechssieben = findViewById(R.id.img_sechs_sieben);
    img_sechssieben.setTag(R.id.loesch, false);
    img_sechssieben.setTag(R.id.schale, 6);
    img_sechssieben.setOnClickListener(this);

    img_sechsacht = findViewById(R.id.img_sechs_acht);
    img_sechsacht.setTag(R.id.loesch, false);
    img_sechsacht.setTag(R.id.schale, 6);
    img_sechsacht.setOnClickListener(this);

    img_sechsneun = findViewById(R.id.img_sechs_neun);
    img_sechsneun.setTag(R.id.loesch, false);
    img_sechsneun.setTag(R.id.schale, 6);
    img_sechsneun.setOnClickListener(this);

    DialogInterface.OnClickListener positivListener = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            dialogInterface.dismiss();
        }
    };

    dlg_schale = new AlertDialog.Builder(MainActivity.this);
    dlg_schale.setMessage(getResources().getString(R.string.txt_SchaleFehler));
    dlg_schale.setPositiveButton("OK", positivListener);

    obj_spiel = findViewById(R.id.btn_spiel);
    obj_spiel.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View view) {

        }
    });

    }
}

@Override
public void onClick(View view) {
    ImageView objekt;
    Bitmap bild, test;
    Drawable test_bild;
    int n_test;
    boolean b_setzen = true;

    objekt = (ImageView) view;
    //Schale prüfen
    n_test = (int) objekt.getTag(R.id.schale);
    if( n_anzahl > 0 ){
        //prüfen ob es aus der selben Schale entnommen wurde
        if( n_schale != n_test ){
            dlg_schale.show();
            b_setzen = false;
        }
    }else{
        n_schale = n_test;
    }
    if( b_setzen ) {
        //Bild prüfen
        bild = ((BitmapDrawable) objekt.getDrawable()).getBitmap();
        test_bild = getResources().getDrawable(R.drawable.sweet_64_delete);
        test = ((BitmapDrawable) test_bild).getBitmap();
        if (bild.sameAs(test)) {
            objekt.setImageResource(R.drawable.sweet_64);
            objekt.setTag(R.id.loesch, false);
            n_anzahl--;
        } else {
            objekt.setImageResource(R.drawable.sweet_64_delete);
            objekt.setTag(R.id.loesch, true);
            n_anzahl++;
        }
    }
}

}

Beim Kompilieren kommt folgende Fehlermeldung:

error: class, interface, or enum expected
public void onClick(View view) {

Was muss ich ändern damit es funktioniert?

Gruss Renato

Kommentieren
Beste Antwort
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.03.2020, 08:22:15 via Website

vor dem OnClick geht eine geschweifte Klammer vermutlich zu viel zu.

Aber: Willst du dir wirklich den Aufwand mit den "manuellen" zuweiseungen machen?
Ich würde mir das lieber als Matrix bzw. 2-Dimensionales Array speichern und dieses einfach durchgehen in einer schleife.
Dann spartst du dir die ganzen Zeilen und es st übersichtlicher,

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Robbiani Renato
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 602

23.03.2020, 10:15:06 via Website

Ciao Pascal

Herzlichen Dank für die schnelle Antwort. Hat etwas gedauert bis ich die richtige Klammer gefunden hatte. Aber nun geht es.

Gruss Renato

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.03.2020, 10:27:59 via Website

Gut :)

Allerdings finde ich den Code immernoch sehr umständlich ;)

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 602

23.03.2020, 10:51:57 via Website

Ciao Pascal

Ich war schon immer ein fleissiger und mit der Corona Krise habe ich noch mehr Zeit!

Du hast schon recht. Die Idee mit dem Array hat mich voll überzeugt. Ich werde dies so machen. Danke für das mitdenken.

Gruss Renato

Hilfreich?
Pascal P.
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 602

23.03.2020, 11:38:16 via Website

Ciao Pascal

private ImageView img_spiel[][];

Wie muss ich das Array initialisieren. Egal was ich mache, kriege ich eine Nullpointer exception? Das nerft!

Gruss Renato

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.03.2020, 11:47:03 via Website

Ich würde das über die IDs machen und später dann über die ImageViews.

Also:

private int[][] imgViewIds = new int[6][9]; //6 "zeilen" a 9 "Spalten", ja nach Initialiserung Notwendig oder nicht.

dann mit Daten füllen:

imgViewIds = {
{R.id.img_eins_eins, R.id.img_eins_zwei, R.id.img_eins_drei, R.id.img_eins_vier,...},
{R.id.img_zwei_eins, R.id.img_zwei_zwei,...},
{...},
...
};

dann darüber itrieren und am ende ein ImaveView Array füllen also:
private ImageView[][] imgViews = new ImageView[6][9];

dugriff dann mit imageViews[0][0] = ...;

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren