Попытка создать действие, в котором семейство шрифтов должно изменяться при каждом нажатии кнопки шрифта

Я пытаюсь создать действие, содержащее текст редактирования и кнопку. При каждом нажатии кнопки семейство шрифтов редактируемого текста должно быть изменено в соответствии со шрифтами, указанными в списке массивов. Действие содержит ArrayList всех идентификаторов шрифтов в нем. всякий раз, когда будет нажата кнопка шрифта, будет вызываться оператор if, который будет проверять, является ли выбранный шрифт последним или нет, если это последний элемент в списке, тогда он установит семейство шрифтов и сбросит положение шрифта на 0, иначе это установит семейство шрифтов из списка указанной позиции шрифта и увеличит позицию шрифта. Этот оператор if-else будет выполнять действие по установке нового семейства шрифтов в соответствии со списком массивов. Я поискал в Интернете и нашел решение как setTypeface, когда я использовал решение,он дал ошибку, которая говорит

 Unable to start activity ComponentInfo{com.nanb.alpha/com.nanb.alpha.postcreater}: java.lang.ArrayIndexOutOfBoundsException: length=4; index=2131296256 

коды приведены ниже:-

 ArrayList<Integer> fontstyle = new ArrayList<Integer>(7);
int fontpostion = 0;

private void fontstylemethod() {
    fontstyle.add(R.font.abril_fatface);
    fontstyle.add(R.font.cedarville_cursive);
    fontstyle.add(R.font.alfa_slab_one);
    fontstyle.add(R.font.annie_use_your_telescope);
    fontstyle.add(R.font.aclonica);
    fontstyle.add(R.font.aguafina_script);
    fontstyle.add(R.font.arizonia);

    editText.setTypeface(Typeface.defaultFromStyle(fontstyle.get(0)));

    font.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(fontpostion == 6){
                //Toast.makeText(view.getContext(),"last element",Toast.LENGTH_SHORT).show();
                editText.setTypeface(Typeface.defaultFromStyle(fontstyle.get(fontpostion)));
                fontpostion= 0;
            }else{
                fontpostion++;
                editText.setTypeface(Typeface.defaultFromStyle(fontstyle.get(fontpostion)));
            }
        }
    });
} 

0 ответов

Другие вопросы по тегам