【问题标题】:Compare TextView and EditText Values比较 TextView 和 EditText 值
【发布时间】:2013-12-18 09:51:21
【问题描述】:

我正在尝试将 EditText 值与 TextView 进行比较,但总是得到“不匹配!

这是比较两个值的错误方法吗?

例如:我在 TextView 中存储了 win 并在 EditText 中输入了相同的 win 但得到 不匹配 ......

    EditText editPassword;
    String strPassword;
    TextView lblPassword;
    String password;
    String strMatch;

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

        editPassword = (EditText) findViewById(R.id.editPassword);

        strPassword = editPassword.getText().toString();

        // getting intent data
        Intent in = getIntent();

        password = in.getStringExtra(TAG_PASSWORD);

        lblPassword = (TextView) findViewById(R.id.password_label);

        lblPassword.setText(password);

        strMatch= lblPassword.getText().toString();        

        btnSubmit = (Button) findViewById(R.id.btnSubmit);
        btnSubmit.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(strPassword.equals(strMatch))
                {
                  Toast.makeText(getApplicationContext(), "Match !",
                                    Toast.LENGTH_LONG).show();
                  editPassword.setText(null);
                }
                else 
                {
                  Toast.makeText(getApplicationContext(), "Does not match !",
                            Toast.LENGTH_LONG).show();
                }
            }
        });        
    }

【问题讨论】:

  • 只是一个忠告。了解如何在代码中设置断点并在调试模式下运行应用程序。这将允许您在应用程序运行时检查变量的值,并了解它们不匹配的原因。
  • 在这里查看最佳解决方案.. stackoverflow.com/questions/6567527/…

标签: java android


【解决方案1】:

ButttononClick 方法中添加这一行

 strPassword = editPassword.getText().toString();

现在你的edittext值为空字符串意味着""

【讨论】:

  • 但是为什么在 onClick(...) 里面
  • 第一次edittext中没有数据..输入数据后你会按下按钮..现在edittext有数据..你得到了..
  • ohhh... 是 onCreate() EditText 的初始值为 null,所以如何在没有任何数据进入 EditText 的情况下与其他字段匹配...无论如何感谢您的帮助
  • 只有从edittext获取数据后,你才能执行你想要的操作。直到那时你不能......或者你可以直接用硬编码设置数据......
【解决方案2】:

使用

 strPassword = editPassword.getText().toString();

onClick() 事件中的一行

 In your case the edit text value is always to be ""

【讨论】:

  • @kalyanpvs 哎呀我同意
【解决方案3】:
EditText editPassword;
    String strPassword;
    TextView lblPassword;
    String password;
    String strMatch;

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

        editPassword = (EditText) findViewById(R.id.editPassword);



        // getting intent data
        Intent in = getIntent();

        password = in.getStringExtra(TAG_PASSWORD);

        lblPassword = (TextView) findViewById(R.id.password_label);

        lblPassword.setText(password);



        btnSubmit = (Button) findViewById(R.id.btnSubmit);
        btnSubmit.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
              strPassword = editPassword.getText().toString();
              strMatch= lblPassword.getText().toString(); 

                if(strPassword.equals(strMatch))
                {
                  Toast.makeText(getApplicationContext(), "Match !",
                                    Toast.LENGTH_LONG).show();
                  editPassword.setText(null);
                }
                else 
                {
                  Toast.makeText(getApplicationContext(), "Does not match !",
                            Toast.LENGTH_LONG).show();
                }
            }
        });        
    }

【讨论】:

    【解决方案4】:

    想想你的行的顺序。您首先在开始时将 ONCE 分配给 strPassword 和 strMatch,然后更改底层控件(甚至可能通过在 GUI 中编辑某些内容),但您的 onClick() 方法仍会比较您最初存储在 strPassword 和 strMatch 中的值。

    尝试替换

    if(strPassword.equals(strMatch))
    

    if(editPassword.getText().equals(lblPassword.getText()))
    

    (或在每个后面附加toString(),我不记得是否需要toString()

    【讨论】:

      【解决方案5】:

      试试下面的代码

      if(strPassword.trim().equals(strMatch.trim()))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-14
        • 2013-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-10
        • 1970-01-01
        相关资源
        最近更新 更多