2017-12-12 20 views
0

ノートアプリケーションのようなプロジェクトをプログラミングしたいと思っています。私はアンドロイドスタジオを使用しており、私はこのコードサンプルで始まったが、私が理解していない2つのことがある。ArrayListをAndroidスタジオで使用する

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

まず一つはか、getInputは== nullが常に秒1

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

をfalse.Andている理由私は、私はそれが何を意味するか知っていると思うが、私はのようなものを置く方法を確認していない、このエラーを取得しています{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

空であっても構いませんが、ヌルではありません。 ""のように空です。 String getInputと言っただけではnullになります。 StringではなくgetInput = txt1.getText()。toString();その場合は価値がないからです。空の文字列は技術的に値です。また、配列にgetInputが含まれているかどうかを確認する前に、まずそれをテストすることをお勧めします。 –

+0

ええ、私は自分の答えを投稿するとすぐにそれを信じます。私の最初の質問人に答えてくれてありがとう。 –

0

suleymanと同様に、arrayListに文字列があるかどうかを確認する前に、入力やその他の条件をチェックする必要があります。有効な入力があるかどうかをチェックする代わりに

getInput.trim().equals("") 

のではなく、ORI入力があるかどうかをチェックする場合は、あなたは、のようにそれをチェック

if(getInput.trim().length() > 0)