【问题标题】:Password - String comparison密码 - 字符串比较
【发布时间】:2017-03-10 21:24:17
【问题描述】:

我的应用包含一个Activity,它要求输入String 密码,以便启动第二个Activity。我使用EditText 进行输入,使用Button 进行验证。如果按下Button,应用程序应检查插入的密码(假设它是“ABC”)是否与数组中的密码匹配。如果没有,请将插入的密码设置为红色。

 public class Login extends AppCompatActivity{

    Button   mButton;
    EditText mEdit;
    String [] mArray;


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

        mButton = (Button)findViewById(R.id.anmelden_button);
        mEdit   = (EditText)findViewById(R.id.password);

        mButton.setOnClickListener(
                new View.OnClickListener()
                {
                    public void onClick(View view)
                    {
                        Log.v("EditText", mEdit.getText().toString());
                    }
                });

        String [] mArray = getResources().getStringArray(R.array.password);

        if (mArray.equals(mEdit.getText().toString())){
            Intent intent = new Intent(this, secondactivity.class);
            startActivity(intent);

        }else{
            mEdit.setTextColor(Color.RED);
        }
    }
}

我的问题是,当我插入“ABC”并按下按钮时,什么也没有发生。

【问题讨论】:

  • 什么都没有?甚至没有日志记录?
  • 只是 "V/EditText: ABC" 但我不知道这应该告诉我什么。
  • Bc 粗体字应显示实际问题,而非粗体字作为更接近的描述,但如果您愿意,我可以删除它:)
  • @Quacksilber 好吧,这就是您在 onClick 方法中所拥有的全部内容 - 当您单击按钮时,您还期望发生什么?
  • Log.v("EditText", mEdit.getText().toString()); 这是 onClick 中唯一的代码行,所以它看起来很完美。

标签: java android arrays


【解决方案1】:

您需要先遍历所有密码,然后检查是否找到了您想要的密码。

您的 onclick 侦听器应如下所示:

mButton.setOnClickListener(new View.OnClickListener()
{
    public void onClick(View view)
    {
        String [] mArray = getResources().getStringArray(R.array.password);

        // loop to check all passwords
        for (String s : mArray) {
            if (s.equals(mEdit.getText().toString())) {
                // found the password
                Intent intent = new Intent(this, secondactivity.class);
                startActivity(intent);
                return;
            }
        }

        mEdit.setTextColor(Color.RED);

    }
});

【讨论】:

  • @Quacksilber 文本没有变成红色并且新活动没有出现?那就帮不了你了,你的代码还有其他问题。
  • 好的,我在strings.xml中改了一些东西,现在可以了,非常感谢你的帮助!!! :)
【解决方案2】:

将您的密码检查代码放入 onClickListener 中

循环遍历数组的每个元素,根据 EditText 中的值检查它

【讨论】:

  • 您的检查方法不正确。您正在根据字符串检查数组对象。
  • 好吧,我按照你的所有指示,也把所有数组的东西都改成了一个字符串,但现在我得到一个错误,告诉我,这一行 (String [] mArray = getResources().getString( R.string.password);) 不起作用,因为它需要 String[] 并找到 String。有什么区别?
  • 那行说“将此字符串分配给此数组” - 你不能混合这样的类型。想象一下你写了这个int i = "This is a String"。出于同样的原因,这不会起作用 - 它说“将此字符串分配给此int”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多