我试图比较两个edittext框的值。我想要的是比较passw1 = passw2。因为我的代码现在正在比较我输入的两个字符串,因为我无法比较它们。
final EditText passw1= (EditText) findViewById(R.id.passw1);
final EditText passw2= (EditText) findViewById(R.id.passw2);
Button buttoks = (Button) findViewById(R.id.Ok);
buttoks.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (passw1.toString().equalsIgnoreCase("1234") && passw2.toString().equalsIgnoreCase("1234")){
Toast.makeText(getApplication(),"Username and password match", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getApplication(),"Username and password doesn't match", Toast.LENGTH_SHORT).show();
}
} });
答案 0 :(得分:34)
使用==运算符将比较字符串的引用而不是字符串本身。
好的,你必须toString()可编辑。我加载了一些处理这种情况之前的代码。
String passwd1Text = passw1.getText().toString();
String passwd2Text = passw2.getText().toString();
if (passwd1Text.equals(passwd2Text))
{
}
答案 1 :(得分:16)
[编辑] 我之前犯了一个错误,因为要获取文本,你需要使用.getText()。toString()。
以下是一个完整的工作示例:
package com.psegina.passwordTest01;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
public class Main extends Activity implements OnClickListener {
LinearLayout l;
EditText user;
EditText pwd;
Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
l = new LinearLayout(this);
user = new EditText(this);
pwd = new EditText(this);
btn = new Button(this);
l.addView(user);
l.addView(pwd);
l.addView(btn);
btn.setOnClickListener(this);
setContentView(l);
}
public void onClick(View v){
String u = user.getText().toString();
String p = pwd.getText().toString();
if( u.equals( p ) )
Toast.makeText(getApplicationContext(), "Matches", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getApplicationContext(), user.getText()+" != "+pwd.getText(), Toast.LENGTH_SHORT).show();
}
}
原始答案(由于缺少toString()而无法正常工作)
尝试使用.getText()而不是.toString()。
if( passw1.getText() == passw2.getText() )
#do something
.toString()返回整个对象的String表示,这意味着它不会返回您在字段中输入的文本(通过添加Toast来显示.toString()的输出)
答案 2 :(得分:5)
在onclik函数中用这一行替换第一行你一定会得到正确的结果。
if(passw1.getText()。toString()。equalsIgnoreCase(“1234”)&& passw2.getText()。toString()。equalsIgnoreCase(“1234”)){
答案 3 :(得分:3)
您可以使用Java的equals()
比较值:
public void onClick(View v) {
// TODO Auto-generated method stub
s1=text1.getText().toString();
s2=text2.getText().toString();
if(s1.equals(s2))
Show.setText("Are Equal");
else
Show.setText("Not Equal");
}
答案 4 :(得分:2)
你需要getText() - 它返回一个Editable和toString() - 将它转换为String进行匹配。
所以而不是:passw1.toString().equalsIgnoreCase("1234")
你需要passw1.getText().toString().equalsIgnoreCase("1234")
。
答案 5 :(得分:1)
您可以使用String.compareTo(String)返回一个负数(<),零(=)或正数(>)的整数。
使用它:
您可以使用 String.compareTo(String)返回一个负数(<),零(=)或正数(>)的整数。
使用它:
String a="myWord";
if(a.compareTo(another_string) <0){
//a is strictly < to another_string
}
else if (a.compareTo(another_string) == 0){
//a equals to another_string
}
else{
// a is strictly > than another_string
}
答案 6 :(得分:0)
首先尝试在.trim()
之前使用.equals()
,或者创建一个包含这些内容的新String var。
答案 7 :(得分:0)
在这里做同样的事情需要两次显示“成功” 响应是来自PHP的数据
String res=response.toString().trim;
Toast.makeText(sign_in.this,res,Toast.LENGTH_SHORT).show();
if ( res.compareTo("success")==0){
Toast.makeText(this,res,Toast.LENGTH_SHORT).show();
}