Изменить изображение на правильный пароль - PullRequest
0 голосов
/ 11 октября 2010

Итак, я - полный новичок, и в настоящее время прохожу введение в курс «Мобильное программирование», на котором мы используем Android (у меня есть некоторый опыт работы с Java). Я пытаюсь выполнить простое задание, которое отображает текстовое поле и изображение, и после ввода правильного «пароля» и нажатия кнопки ввода изображение меняется.

Должно быть так просто! Но мне очень тяжело с этим и я не могу понять, что я делаю неправильно, даже после того, как я провел много поисков (я предполагаю, что это что-то супер очевидное, и мне не хватает этого).

Вот мой код:

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

}

и мой 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>

Сначала я подумал, что не извлекаю String из «enterText» должным образом, поэтому сравнение с «паролем» происходит неправильно, но с тех пор я попытался просто напечатать enterText, и он работает нормально.

Полностью разочарован - любая помощь будет принята с благодарностью!

Daniel

1 Ответ

1 голос
/ 11 октября 2010

if(enteredText.getText().toString() == pass) должно быть if(enteredText.getText().toString().equals(pass)).

В стилистическом плане вы не должны выполнять проверку в функции переключателя изображения - вы должны проверить, совпадает ли пароль, и затем вызвать функцию переключателя изображения.

...