Попытка создать действие, в котором семейство шрифтов должно изменяться при каждом нажатии кнопки шрифта
Я пытаюсь создать действие, содержащее текст редактирования и кнопку. При каждом нажатии кнопки семейство шрифтов редактируемого текста должно быть изменено в соответствии со шрифтами, указанными в списке массивов. Действие содержит 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)));
}
}
});
}