2017-12-12 1 views
0

노트 애플리케이션과 같은 프로젝트를 프로그래밍하고 싶습니다. android studio를 사용하고 있는데이 코드 샘플로 시작했지만 이해할 수없는 두 가지가 있습니다. getInput에가 == null이 항상 두 번째 false.And 이유Android Studio에서 ArrayList를 사용하여 올바른 방법

else if (getInput == null || getInput.trim().equals("")) 

먼저 하나 하나

Error:Execution failed for task ':app:transformDexWithInstantRunSlicesApkForDebug'.> > java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $

내가 얻을 나는 그것을 의미하지만, 내가 좋아하는 뭔가를 넣어하는 방법을 잘 누구인지 알고 있다고 생각이 오류 {arraylist의 시작으로. 미리 감사드립니다.

package com.example.mobile; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 
import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

    Button button1; 
    ArrayList<String> addArr = new ArrayList<>(); 
    ListView list1; 
    EditText txt1; 


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

     list1 = findViewById(R.id.listView); 
     button1 = findViewById(R.id.button); 
     txt1 = findViewById(R.id.edit); 
     button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       String getInput = txt1.getText().toString(); 

      if(addArr.contains(getInput)){ 
       Toast.makeText(getBaseContext() , "Item already exist", Toast.LENGTH_LONG).show(); 
      } 
      else if (getInput == null || getInput.trim().equals("")){ 
       Toast.makeText(getBaseContext(), "No input is given" , Toast.LENGTH_LONG).show(); 
      } 
      else{ 
       addArr.add(getInput); 
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this , android.R.layout.simple_list_item_1, addArr); 
       list1.setAdapter(adapter); 
       ((EditText)findViewById(R.id.edit)).setText(" "); 
      } 
      } 
     }); 
    } 


} 

답변

1

이미 getInput 변수를 초기화하고 있습니다. 그래서, 그것은 결코 null이 아닙니다. 따라서 getInput == null은 항상 false를 반환합니다.

+0

, 등을 확인해야하지만 사용자가 원하는 경우가 비어있을 수 있습니다 EditText에 아무것도 쓸 수 없습니까? –

+0

비어있을 수도 있지만 예 (null이 아님) 일 수 있습니다. ''에서와 같이 비어 있습니다. 방금 String getInput이라고 말하면 null이됩니다. String보다 getInput = txt1.getText(). toString(); 이 경우에는 가치가 없기 때문입니다. 빈 문자열 ""은 기술적으로 값입니다. 배열에 getInput이 포함되어 있는지 확인하기 전에 먼저 테스트를 해보는 것이 좋습니다. –

+0

그래, 나는 대답을 게시하자마자 그 질문에 의존한다. 첫 번째 질문에 답변 해 주셔서 감사합니다. –

0

suleyman과 마찬가지로 arrayList에 문자열이 있는지 검사하기 전에 입력 및 기타 조건을 확인해야합니다. 입력이있는 경우 검사의 경우 유효한 입력이 있는지 확인하는 대신

getInput.trim().equals("") 

의하지 오라이, 당신은

if(getInput.trim().length() > 0) 
관련 문제