0

Donc, je suis un newb complet, et je suis actuellement en train de faire une intro à cours de programmation mobile dans lequel nous utilisons Android (j'ai une certaine expérience avec Java). J'essaie de faire une affectation simple qui affiche un champ de texte et une image, et en entrant le "mot de passe" correct et en appuyant sur Entrée, l'image change.Changer l'image sur le bon mot de passe

Devrait être si simple! Mais j'ai vraiment du mal avec ça et je n'arrive pas à comprendre ce que je fais de mal, même après avoir fait pas mal de recherches (je suppose que c'est quelque chose de super évident et que ça me manque).

Voici mon code:

package CS285.Assignment1; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.EditText; 
import android.view.KeyEvent; 
import android.view.View; 
import android.view.View.OnKeyListener; 
import android.widget.ImageView; 

public class DisplayImage extends Activity 
     implements OnKeyListener{ 

private EditText enteredText; 
private String pass = "monkey"; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     enteredText = (EditText)findViewById(R.id.passField); 
     enteredText.setOnKeyListener(this);  

    } 

    public boolean onKey(View v, int keyCode, KeyEvent event) { 

     // If the event is a key-down event on the "enter" button 
     if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
      (keyCode == KeyEvent.KEYCODE_ENTER)){ 
      // Perform action on key press 

     switchImage(); 

      return true; 
     } 
     return false; 
    } 

    public void switchImage(){ 

    if(enteredText.getText().toString() == pass){ 
    ImageView imgView = (ImageView)findViewById(R.id.Image); 
     imgView.setImageResource(R.drawable.marmoset); 
    }  
    } 

} 

et mon main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView android:id="@+id/textPrompt" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#ff993300" 
    android:text="Please enter password to see my real picture:" 
> 
</TextView> 
<EditText android:id="@+id/passField" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    > 
     </EditText> 
<ImageView 
android:id="@+id/Image" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:adjustViewBounds="true" 
android:src="@drawable/airplane" 
/> 


</LinearLayout> 

Je pensais au début que je n'extrais correctement la chaîne de « enteredText » de sorte que la comparaison avec la "mot de passe" ne se passait pas correctement, mais j'ai depuis essayé juste d'imprimer le texte entré et cela fonctionne très bien.

Totalement frustré - Toute aide serait grandement appréciée!

Daniel

Répondre

1

if(enteredText.getText().toString() == pass) devrait être if(enteredText.getText().toString().equals(pass)). D'un point de vue stylistique, vous ne devez pas effectuer de vérification dans la fonction de changement d'image - vous devez vérifier que le mot de passe correspond et puis appeler la fonction de changement d'image.

+0

Merci beaucoup, beaucoup! J'espère qu'un jour je serai capable de le payer pour un autre programmeur capricieux ...! – malfunction

+0

Si cela a fonctionné pour vous s'il vous plaît appuyez sur la case à cocher à gauche de la réponse :) – I82Much

+0

fait. est-ce que je t'ai bousculé jusqu'à 2 500? – malfunction