0

这是我的主要活动:

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>
4

6 回答 6

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());
    }
}
于 2013-08-26T05:10:41.040 回答
6

因为password没有更新。它包含原始值。像这样更新:

if (password_field.getText().toString().equals("password")) {

顺便说一句:继续final尽可能多地使用关键字!将应用程序中的可变状态最小化,您将成为一个快乐的人。

于 2013-08-26T05:10:55.103 回答
1

因为您正在获取您的密码字符串 onCreate() 方法..不会更新..所以您可以在单击按钮事件后找到您的密码值.....

所以把这条线

final String password = password_field.getText().toString();

点击按钮后...

于 2013-08-26T05:13:49.480 回答
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());
                }

            }
        });
于 2013-08-26T05:36:39.857 回答
0

将 EditText 的值放入 Click Listener 内的 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());
            }
        }
    });
于 2013-08-26T05:14:23.280 回答
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"))
于 2013-08-26T05:22:01.210 回答