2017-03-10 18 views
0

私は、ユーザ入力から得られた編集テキストの自動生成されたリストを持っています。私がしたいのは、シャッフルボタンがクリックされたときにエディットテキストをシャッフルするか、テキストを取得して別のエディットテキストに設定することです。私がやったことは、各エディットテキストのテキストをarraylistに追加してシャッフルし、シャッフルされたリストでレイアウトを再作成することです。しかし、それ自体が私に誤りを与えています。シャッフルボタンをクリックすると、このエラーが表示されます nullオブジェクト参照に仮想メソッド 'android.text.Editable android.text.Editable android.widget.EditText.getText()'を呼び出そうとしました ありがとうございました `edittextの配列をループし、それぞれのテキストを取得

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

    btnForCreate = (Button) findViewById(R.id.btnCreateTxt); 
    editTextForInputToCreate = (EditText) findViewById(R.id.textForInputToCreate); 
    listLayout = (LinearLayout) findViewById(R.id.listLayout); 
    btnDisplay = (Button) findViewById(R.id.btnDisplay); 
    btnShuffleTxt = (Button) findViewById(R.id.btnShuffleTxt); 


    editTextForInputToCreate.animate().translationX(-1000f); 



    btnForCreate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      bringTextInputBackOnScreen(); 


     } 
    }); 


    btnDisplay.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 


      if (editTextForInputToCreate.getText().toString().length() >= 0) { 
       try { 
        listLayout.removeAllViews(); 

       } catch (Throwable throwable) { 
        throwable.printStackTrace(); 
       } 
      } 


      length = Integer.parseInt(editTextForInputToCreate.getText().toString()); 


      for (i = 0; i < length; i++) { 
       editTextCollection = new EditText[length]; 
       editText = new EditText(MainActivity.this); 
       editText.setId(i + 1); 
       editText.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
       editText.setHint("Input" + " " + (i + 1)); 
       listLayout.addView(editText); 
       editTextCollection[i] = editText; 


      } 


     } 


    }); 


    btnShuffleTxt.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      listLayout.removeAllViews(); 
      for (EditText gottenEditText:editTextCollection) 
      { 
       String gottenTexts = gottenEditText.getText().toString(); 
       list.add(gottenTexts); 
      } 

      Collections.shuffle(list); 


     } 


    }); 


} 


private void bringTextInputBackOnScreen() 
{ 
    editTextForInputToCreate.animate().translationXBy(1000f).setDuration(2000); 
} 

`

+1

どのような種類のエラー?その情報を質問に追加してください。そして、他の人にこの混乱を避ける代わりに、あなたのソースコードを適切にフォーマットするために時間を費やしてください。 – GhostCat

+0

それについて申し訳ありません –

+0

あなたはGoogleに "nullpointerexceptionは何ですか?"と言います。 – GhostCat

答えて

0

あなたEditTextCollectionでいくつかの修正を行ってください。

 editTextCollection = new EditText[length];// initialization outside the loop 

for (i = 0; i < length; i++) { 
      editText = new EditText(MainActivity.this); 
      editText.setId(i + 1); 
      editText.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
      editText.setHint("Input" + " " + (i + 1)); 
      listLayout.addView(editText); 
      editTextCollection[i] = editText; 
     } 


btnShuffleTxt.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     listLayout.removeAllViews(); 
     for (EditText gottenEditText:editTextCollection) 
     { 
      String gottenTexts = gottenEditText.getText().toString(); 
      list.add(gottenTexts); 
     } 

    Collections.shuffle(list); 

    for (EditText gottenEditText:editTextCollection) 
    { 
     gottenEditText.setText(list.get(editTextCollection.indexOf(gottenEditText))); 
    } 

} 

});

+0

はい、私はそれをしましたが、本当にやりたいことは、シャッフルボタンがレイアウトに表示されているエディットテキストをシャッフルすることですをクリックします。テキストを取得して配列に保存し、配列リストにテキストを埋め込むことを試みました。 arraylistをシャッフルして、今度はシャッフルされた値でエディットテキストを再度表示してください。 –

+0

私はこの問題を解決しました。答えてくれた皆さん、ありがとうございます –

関連する問題