Android获取EditText值的注意点

Posted 是渣渣呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android获取EditText值的注意点相关的知识,希望对你有一定的参考价值。

代码展示(错误)

public static final  String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //1.获取账号密码信息
        EditText edit_username = findViewById(R.id.username);
        final String username = edit_username.getText().toString();
        //在日志里打印下账号
        Log.i(TAG,"账号为:"+username);
        EditText edit_passwd = findViewById(R.id.passwd);
        final String passwd = edit_passwd.getText().toString();
        //在日志里打印下密码
        Log.i(TAG,"密码为:"+passwd);
        Button btn_login = findViewById(R.id.button);
        final TextView hint = findViewById(R.id.tv1);
        btn_login.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                /**
                 *   测试用户名为admin,密码123456
                 *
                 */
                if (username.equals("admin")) 
                    if (passwd.equals("123456")) 
                        hint.setText("登陆成功");
                     else 
                        hint.setText("密码错误");
                    
                 else 
                    hint.setText("账号错误");
                
            
        );
    

运行结果

(注:这里我是输入了账号密码的,没截图)

问题分析

也就是获取到的值都是空,后面就一直是账号错误
后来看到别人的博客才发现是我傻了。。

editText的值是要在发生点击事件之后才能获得用户输入进去的值。。。。

代码展示(正确)

public static final  String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //1.获取账号密码的EidtText控件
        final EditText edit_username = findViewById(R.id.username);
        final EditText edit_passwd = findViewById(R.id.passwd);
       //2. 获取按钮的控件
        Button btn_login = findViewById(R.id.button);
        final TextView hint = findViewById(R.id.tv1);
        btn_login.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                /**
                 *   测试用户名为admin,密码123456
                 *
                 */
                //注:这两个要点击之后才能取得输入的值。。
                //3. 对账号密码进行判断
                String username = edit_username.getText().toString();
                String passwd = edit_passwd.getText().toString();
                if (username.equals("admin")) 
                    if (passwd.equals("123456")) 
                        hint.setText("登陆成功");
                     else 
                        hint.setText("密码错误");
                    
                 else 
                    hint.setText("账号错误");
                
            
        );
    

运行结果

以上是关于Android获取EditText值的注意点的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何保存转换为数组值的 EditText 并将它们加载回原位

Android - 问题解决之EditText自动获取焦点问题

android listview 获取 edittext内容 并保存

Android EidtText 光标的使用和设置

Android移动应用中的焦点分析

通过 EditText 获取用户输入 [重复]