0

ハードコードされたパスワードを使用してログイン認証用の簡単なコードを作成しました。正しいパスワードを入力している場合でも、制御がeleseループで実行されるという問題があります。

edt=(EditText)findViewById(R.id.edt);
btn=(Button)findViewById(R.id.sub);
s1=edt.getText().toString();

btn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
      Log.d("mynameeeeee",s1);
      if(s1=="123")
      {
        Toast.makeText(getApplicationContext(), "Successful",Toast.LENGTH_LONG).show();
      }
      else
      {
         Log.d("coming in elseeeee","coming in elseeeee");
         Toast.makeText(getApplicationContext(), "not valid",Toast.LENGTH_LONG).show();
      }
    }
 }); 
4

4 に答える 4

2

文字列は次のように比較する必要があります。

if(s1.equals("123")) {}
于 2012-09-25T09:49:50.333 に答える
2

このようにifステートメントを変更します

if(s1.equals("123"))
{
      Toast.makeText(getApplicationContext(), "Successful",Toast.LENGTH_LONG).show();
}
else
{
       Log.d("coming in elseeeee","coming in elseeeee");
       Toast.makeText(getApplicationContext(), "not valid",Toast.LENGTH_LONG).show();
}

文字列を比較するときは常に.equals()関数を使用してください

于 2012-09-25T09:50:16.757 に答える
2

ここに問題があります:

編集テキストが空の場合、作成時に編集テキストコンテンツの参照を保存しています。

比較したいときはいつでも編集テキストの内容を取得する必要があります。これは、あなたの場合はボタンがクリックされたときです。

以下をせよ :

edt=(EditText)findViewById(R.id.edt);
btn=(Button)findViewById(R.id.sub);

btn.setOnClickListener ( new OnClickListener () {
    @Override
    public void onClick ( View v ) {
            Log.d ( "mynameeeeee" , edt.getText().toString() );
            if ( edt.getText().toString().equals ( "123" ) )
            {
                Toast.makeText(getApplicationContext(), "Successful",Toast.LENGTH_LONG).show();
            }
            else
            {
                Log.d("coming in elseeeee","coming in elseeeee");
                Toast.makeText(getApplicationContext(), "not valid",Toast.LENGTH_LONG).show();
            }

        }
    }); 
于 2012-09-25T10:00:10.420 に答える
1

==両方の変数が同じオブジェクトを参照しているかどうかを確認します。この場合、それらは異なるオブジェクトを参照しているため、の結果==はfalseです。

equals()メソッドs1.equals("123")を使用して、文字列オブジェクトの内容を確認します。

于 2012-09-25T09:53:13.983 に答える