0

私はAndroidとJavaの初心者です。私の問題は:

mainActivityクラスには、クリックイベントリスナーがあります。そして、editText値が正しい場合にインテントを開こうとしています(username、passwordなど)ifステートメントがない場合、コードは機能し、他のアクティビティを開始しますが、そのユーザー名パスワードチェックを使用すると、2番目のアクティビティが実行されません。待っているだけです...

どうしたの?

package equalcorp.mobile.kemal;

import android.net.Uri;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;
import android.text.InputFilter.LengthFilter;

public class MainActivity extends Activity {

public EditText username;
public EditText password;   
public TextView tw1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button loginButton=(Button)findViewById(R.id.loginButton);
    username=(EditText)findViewById(R.id.username);
    password=(EditText)findViewById(R.id.password);
    tw1=(TextView)findViewById(R.id.textView1);

    loginButton.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub




            String u_name=username.getText().toString();
            String pass=password.getText().toString();



            if(u_name=="kemal" && pass=="sifre"){

                Intent i=new Intent(MainActivity.this,SecondActivity.class);
                startActivity(i);



            }



        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}



}
4

4 に答える 4

5

文字列を比較するString.equals(String str)代わりに使用する==

于 2012-07-31T13:17:10.130 に答える
4

=文字列は、整数値のような演算子と比較することはできません。

.equalsそれらは方法と比較することができます

 if(u_name.equals("kemal") && pass.equals("sifre")){

            Intent i=new Intent(MainActivity.this,SecondActivity.class);
            startActivity(i);
        }
于 2012-07-31T13:17:45.777 に答える
3

これを試して

if(u_name.equals("kemal") && pass.equals("sifre"))
{
    Intent i=new Intent(MainActivity.this,SecondActivity.class);
    startActivity(i);

}
于 2012-07-31T13:17:25.857 に答える
2

はい、私はここで他の答えに同意します。文字列を比較するために==を使用しないでください。

equals()は、文字列をコマッピングするために実装されたメソッドです。そして、なぜこれが主張されているのか、

"=="は文字列オブジェクトの参照値を比較し、equals()メソッドは文字列オブジェクトのコンテンツを比較します

「==」演算子は2つのオブジェクトを比較するために使用され、オブジェクトがメモリ内の同じ場所を参照しているかどうかを確認します。

ただし、equalsメソッドは、実際には2つのオブジェクトの内容を比較することを目的としており、メモリ内のそれらの場所を比較することを目的としていません。

だから明らかにあなたは次のようなものを使わなければなりません、

if(u_name.equals("kemal") && pass.equals("sifre")){ //your code here }
于 2012-07-31T13:23:50.687 に答える