Convertir ImageView à Integer: Android studio

Nathan:

Je suis en train de prendre la cible (initiée comme ImageView) id et de mettre l'identifiant entier dans un boîtier de commande à regarder les vues adjacentes et comparer leurs dessinables pour déterminer s'il gagne ou si le jeu continue. J'ai la variable ButtonPressed initiée comme un entier et utilisé le parseInt () pour obtenir la valeur de la cible int.

public void compareButton(int buttonPressed){
    //int count = 0;
    ImageView adjacent;
    ImageView adjacentB;

    switch (buttonPressed){
        case R.id.imageButtonA: //this is where adjacent buttons are identified and compared
            adjacent = findViewById(R.id.imageButtonB);
            adjacentB = findViewById(R.id.imageButtonC);
            if (target.getDrawable() == adjacent.getDrawable() && target.getDrawable() == adjacentB.getDrawable()) {

                Toast.makeText(MainActivity.this, "You Win!", Toast.LENGTH_SHORT).show(); //Win condition


           // } else if (target.getDrawable() == R.id.imageButtonE.getDrawable() & target.getDrawable() == R.id.imageButtonI.getDrawable()) {

                //Toast.makeText(MainActivity.this, "You Win!", Toast.LENGTH_SHORT).show(); //Win condition

           // } else if (target.getDrawable() == R.id.imageButtonD.getDrawable() & target.getDrawable() == R.id.imageButtonG.getDrawable()) {

                //Toast.makeText(MainActivity.this, "You Win!", Toast.LENGTH_SHORT).show(); //Win condition

            }
            break;
        case R.id.imageButtonB:

            break;

Je ne remplit pas tous les cas à des fins de débogage.

La question que j'ai est quand je lance l'émulateur, je reçois une erreur qui dit

Caused by: java.lang.NumberFormatException: For input string: "androidx.appcompat.widget.AppCompatImageButton{517eade VFED..C.. ...P..ID 45,381-304,628 #7f070072 app:id/imageButtonA}"
    at java.lang.Integer.parseInt(Integer.java:521)
    at java.lang.Integer.parseInt(Integer.java:556)
    at com.example.connect3.MainActivity.switchColor(MainActivity.java:75)

Voici le code pour le OnClickListener:

public void switchColor(View view) {

    //Button pressed, depending on user, switch's to that users color; identify adjacent button ID's; toast player control switch
    if (player == 1) {

        source = findViewById(R.id.yellow);
        target = findViewById(view.getId());
        target.setImageDrawable(source.getDrawable());
        buttonPressed = Integer.parseInt(target.toString());
        compareButton(buttonPressed);
        player++;
        Toast.makeText(MainActivity.this, "Player 2's Turn!", Toast.LENGTH_SHORT).show();

    } else {

        source = findViewById(R.id.red);
        target = findViewById(view.getId());
        target.setImageDrawable(source.getDrawable());
        buttonPressed = Integer.parseInt(String.valueOf(target));
        compareButton(buttonPressed);
        player--;
        Toast.makeText(MainActivity.this, "Player 1's Turn!", Toast.LENGTH_SHORT).show();

    }

Pas tout à fait sûr de ce qui se passe à ce moment parce que je pensais que je l'ai fait tout correct mais il est clair que quelque chose manquait. Toute aide serait appréciée.

Khushboo:

changement :

buttonPressed = Integer.parseInt(String.valueOf(target));

À :

ButtonPressed = target.getId ();

Explication: votre erreur indique des moyens de NumberFormatException que vous essayez d'obtenir une valeur int de chaîne qui n'est pas possible de Parse ou simplement votre chaîne ne contient pas la valeur correcte int et vous passent (androidx.appcompat.widget ...) comme chaîne pendant que vous devez passer le bouton I'D

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=360827&siteId=1
conseillé
Classement