这是我的主要活动:
package com.santosh.sampleapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
public class Main extends Activity
{
EditText password_field;
TextView tv_err;
Button login;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
password_field = (EditText) findViewById(R.id.password_field);
tv_err = (TextView)findViewById(R.id.tv_err);
login = (Button)findViewById(R.id.login);
final String password = password_field.getText().toString();
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
if (password.equals("password")) {
tv_err.setText("good pass");
} else {
tv_err.setText("wrong pass");
}
} catch (Exception e) {
tv_err.setText(e.toString());
}
}
});
}
}
即使我在文本视图中输入password
,它也会显示wrong pass
消息。
如果有帮助,这是我的 src / layout / 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"
>
<EditText android:id="@+id/password_field"
android:hint="@string/password_hint"
android:inputType="textPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button android:id="@+id/login"
android:text="@string/get_message"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/>
<TextView android:id="@+id/tw_err"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/>
</LinearLayout>
答案 0 :(得分:6)
在onClick方法中从TextView获取密码:
public void onClick(View v) {
try {
final String password = password_field.getText().toString();
if (password.equals("password")) {
tv_err.setText("good pass");
} else {
tv_err.setText("wrong pass");
}
} catch (Exception e) {
tv_err.setText(e.toString());
}
}
答案 1 :(得分:6)
因为password
未更新。它包含原始值。像这样更新:
if (password_field.getText().toString().equals("password")) {
BTW:尽可能继续使用final
关键字!最大限度地减少应用中的可变状态,你将成为一个快乐的人。
答案 2 :(得分:1)
因为你正在获取你的密码字符串onCreate()方法..它将不会更新..所以你在点击按钮事件后找到你的密码值.....
所以把这一行
final String password = password_field.getText().toString();
点击按钮后......
答案 3 :(得分:1)
更改您的登录按钮点击监听器,如下所示:
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
final String strPassword=password_field.getText().toString();
if (TextUtils.equals(strPassword, "password")) {
tv_err.setText("good pass");
} else {
tv_err.setText("wrong pass");
}
} catch (Exception e) {
tv_err.setText(e.toString());
}
}
});
答案 4 :(得分:0)
将EditText的值输入Click Clickner中的String变量。
试试如下:
login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String password = password_field.getText().toString(); try { if (password.equals("password")) { tv_err.setText("good pass"); } else { tv_err.setText("wrong pass"); } } catch (Exception e) { tv_err.setText(e.toString()); } } });
答案 5 :(得分:0)
单击登录按钮时未更新密码字符串,请删除以下行:
final String password = password_field.getText().toString();
检查onClick
侦听器中的字符串:
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
if (password_field.getText().toString().equals("password")) {
tv_err.setText("good pass");
} else {
tv_err.setText("wrong pass");
}
} catch (Exception e) {
tv_err.setText(e.toString());
}
}
});
,无需使用String password = password_field.getText().toString();
它为字符串分配内存,所以直接检查:
if (password_field.getText().toString().equals("password"))