0

Android用のロック画面アプリを作成していますが、正しいパスワードを入力したときにアクティビティを終了するのに問題があります。コードが機能するのは、パスワードが1文字の場合のみです。それ以外の場合は、ロックが解除されません。それは私がグローバル変数をどのように変更しているかに関係していると思います。

これは私がテストに使用しているコードです。2つのテキストビューを順番にタッチしてロックを解除する必要がありますが、そうではありません。

public class LockScreen extends Activity implements OnClickListener {

String password = "cd";
String guess;


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

    TextView c = (TextView) findViewById(R.id.c);
    TextView d = (TextView) findViewById(R.id.d);

    c.setOnClickListener(this);
    d.setOnClickListener(this);

}

public void onClick(View v) {

    switch(v.getId()) {
    case R.id.c:
        if (guess == null) {
            guess = "c";
        } else {
            guess += "c";
        }
        break;
    case R.id.d:
        if (guess == null) {
            guess = "d";
        } else {
            guess += "d";
        }
        break;
    }


    if (guess == password) {
        finish();
    }
}
4

1 に答える 1

0

-メソッドを使用equals()して比較します。

-Javaでは、メソッド Objects使用して比較され、オブジェクトであるため、オブジェクトと同じ傾向に従う必要があります。equals()String

-2つ ==以上Object Reference Variablesが同じオブジェクトを指しているかどうか、またはヒープ上を指しているかどうかを確認するために使用されます。

-そして、ちょっとしたアドバイスですが、char[]パスワードの保存には、の代わりに常に使用する方がよいということです(つまり、char配列)String

例えば:

if (guess.equals(password)){


}
于 2012-11-20T05:27:15.403 に答える