【问题标题】:If statement not working correctly如果语句不能正常工作
【发布时间】:2014-11-13 05:13:27
【问题描述】:

我正在为 Android 制作一个应用程序,它可以让您查看是否有可用的日期。如果日期不在数组列表中,它将被添加,如果日期在数组列表中,则用户将收到一条消息“请重试”。

If 语句将不起作用,并且无论输入的日期是否已经在数组列表中,都不会给出“请重试”消息。我已经确认数据正在写入arraylist。

@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.second_activity); 

            final ArrayList<String> DateArray = new ArrayList<String>(); 
            DateArray.add("0101"); //test code

            addListenerRadioGroup(); //not important

            mNextButton = (Button)findViewById(R.id.NextButton); 
            mNextButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    mEditText2 =(EditText)findViewById(R.id.editText2);
                    if (DateArray.contains(mEditText2)) { //looks for edit text info
                        Toast.makeText(getApplicationContext(), //This should pop up if user
                                "please try again", Toast.LENGTH_SHORT).show(); //enters "0101"
                    } else {


                    DateArray.add(mEditText2.getText().toString()); }

                }

            });




     }

【问题讨论】:

  • ArrayList 永远不会包含 EditText 对象。您需要将 mEditText2 转换为等效字符串,然后使用 contains。
  • @JGrice mEditText2 已经将通过隐式的toString() 调用进行转换,这就是为什么这个if 语句不起作用的原因。需要通过调用mEditText2.getText()来提取这个EditText的所需信息。

标签: java android if-statement arraylist


【解决方案1】:

看起来你的 if 语句条件是测试 EditText 对象是否在 ArrayList 中。您可能想要测试 EditText 对象的字符串值,因为您的 ArrayList 存储字符串。

【讨论】:

  • 虽然这个机会真的很容易,但如果你提供必要的代码,它会让你回答完整。
  • 请注意,OP 知道足以在插入时调用 toString 但忘记了测试中的那一步。她很亲近。
  • mEditText2.getText().toString()
【解决方案2】:
you are checking if condition with providing wrong condition. 


  if (DateArray.contains(mEditText2));

这里的 mEditText2 应该是任何 String。你正在传递 edittext 引用。

【讨论】:

    【解决方案3】:

    从您的 EditText 中,您可以将字符串值放入 ArrayList

    final ArrayList<String> DateArray = new ArrayList<String>(); 
                DateArray.add("0101");
    

    DateArray.add(mEditText2.getText().toString())

    但是当您查找编辑文本信息时,您正在查看的是 edittext 对象而不是字符串值。

    试试这个方法..

    if(DateArray.contains(mEditText2.getText().toString())
    

    【讨论】:

      猜你喜欢
      • 2019-12-25
      • 1970-01-01
      • 2011-03-14
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      相关资源
      最近更新 更多