Member 12815188 Ответов: 0

Циклический просмотр массива редактируемых текстов и получение текстов каждого из них


У меня есть несколько кнопок, которые я хочу использовать для достижения некоторых функций. Кнопка Создать анимирует текстовое представление и выводит его на экран. Кнопка отображения принимает число, которое вводит пользователь, и создает это число редактируемых текстов в линейном макете. Что я хочу сделать так это то что при нажатии кнопки shuffle я хотел бы перетасовать edittexts расположить их в случайном порядке
Вот мой код

   @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);
    }

}


Что я уже пробовал:

Я попытался здесь сохранить тексты, полученные из каждого из созданных edittexts, и сохранить их в массиве, который при нажатии кнопки display. Когда нажата кнопка shuffle, я попытался перебрать массив и получить тексты для каждого edittext в массиве, добавил его в arraylist, а затем перетасовал список. Хотя я еще не ставил его ни в какое поле зрения. Поэтому я запустил код, а затем он выдал мне эту ошибку

Ява.яз.Исключение NullPointerException: попытка вызвать виртуальный метод 'для Андроид.текст.Редактируемые андроид.виджет.EditText.getText () ' для ссылки на нулевой объект

Есть ли лучший способ сделать это или есть способ исправить эту ошибку

Richard MacCutchan

Пожалуйста, отредактируйте свой вопрос, удалите весь код, не связанный с проблемой, удалите все лишние пустые строки и правильно отформатируйте его с помощью тегов "pre", чтобы он был читабельным. Также объясните, где именно возникает проблема.

Member 12815188

Так что извини сделаю это сейчас

Richard MacCutchan

Сообщение об ошибке говорит вам, что вы пытаетесь использовать ссылочную переменную, которая не была инициализирована. Вам нужно использовать свой отладчик, чтобы узнать, какая переменная и почему она равна нулю.

Member 12815188

Я решил эту проблему спасибо

0 Ответов