私はまったくの初心者で、現在、Android を使用するモバイル プログラミング コースの概要を学んでいます (Java の経験はある程度あります)。テキストフィールドと画像を表示する簡単な割り当てをしようとしています。正しい「パスワード」を入力してEnterキーを押すと、画像が変わります。
とてもシンプルなはずです!しかし、私はこれに非常に苦労しており、かなりの検索を行った後でも、何が間違っているのかわかりません(それは非常に明白なものであり、見逃していると思います)。
これが私のコードです:
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>
最初は「enteredText」から文字列を適切に抽出していなかったので、「パスワード」との比較が正しく行われていないと思っていましたが、それ以来、enteredText を印刷するだけでうまくいきました。
完全に欲求不満--どんな助けでも大歓迎です!
ダニエル