Java 单击按钮时,EditText中的背景色和字体系列应更改

Java 单击按钮时,EditText中的背景色和字体系列应更改,java,android,arraylist,android-edittext,Java,Android,Arraylist,Android Edittext,我正在尝试创建一个包含edittext的活动,每当单击按钮时,其背景颜色和字体都应该更改。 为了对edittext执行这些操作,我创建了两个int值的ArrayList,并将所有颜色id和字体id保存在此ArrayList中。每当单击按钮时,背景色不会改变,但颜色的六位代码会打印在编辑文本中,这些颜色代码在每种颜色的代码前面都有额外的ff值,如#ff1EFA9D,在字体方法中,我收到一个错误,显示:- 无法启动活动组件信息{com.nanb.alpha/com.nanb.alpha.postcr

我正在尝试创建一个包含edittext的活动,每当单击按钮时,其背景颜色和字体都应该更改。 为了对edittext执行这些操作,我创建了两个int值的ArrayList,并将所有颜色id和字体id保存在此ArrayList中。每当单击按钮时,背景色不会改变,但颜色的六位代码会打印在编辑文本中,这些颜色代码在每种颜色的代码前面都有额外的ff值,如#ff1EFA9D,在字体方法中,我收到一个错误,显示:-

无法启动活动组件信息{com.nanb.alpha/com.nanb.alpha.postcreater}:java.lang.ArrayIndexOutOfBoundsException:length=4;索引=-1

我曾试图通过互联网找到解决方案,但没有得到任何满足错误的解决方案

下面给出了更改edittext的背景色和字体的代码

  private EditText editText;
  private ImageButton color,font;
  ArrayList<Integer> bgcolorlist = new ArrayList<Integer>(10);
  ArrayList<Integer> fontstyle = new ArrayList<Integer>(6);
  int fontstylename=R.font.abril_fatface,bgcolor=R.color.white,fontpostion = fontstyle.indexOf(fontstylename);
  int postion = bgcolorlist.indexOf(bgcolor);


 private void Initialization() {
    cancel = view.findViewById(R.id.backbutton);
    createnextbutton = view.findViewById(R.id.nextbutton);
    editText = view.findViewById(R.id.textpost);
    color = view.findViewById(R.id.bgcolorbutton);
    font = view.findViewById(R.id.fontstyle);
}

 //codes are for the background color changing
  private void backgroundcolormethod() {

    bgcolorlist.add(R.color.white);
    bgcolorlist.add(R.color.darkGreen);
    bgcolorlist.add(R.color.colorPrimaryDark);
    bgcolorlist.add(R.color.colorAccent);
    bgcolorlist.add(R.color.colorPrimary);
    bgcolorlist.add(R.color.orange);
    bgcolorlist.add(R.color.edittextbg5);
    bgcolorlist.add(R.color.edittextbg4);
    bgcolorlist.add(R.color.edittextbg3);
    bgcolorlist.add(R.color.edittextbg2);
    bgcolorlist.add(R.color.edittextbg1);

    editText.setBackgroundColor(bgcolor);

    color.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(postion == 10){
                //Toast.makeText(view.getContext(),"last element",Toast.LENGTH_SHORT).show();
                editText.setText(bgcolorlist.get(postion));
                postion = 0;
            }else{
                int newpostion = postion + 1;
                editText.setText(bgcolorlist.get(newpostion));
                postion = newpostion;
            }
        }
    });

}

//codes for changing the fonts 
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(fontpostion));

    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.setText(fontstyle.get(postion));
                fontpostion= 0;
            }else{
                int newpostion = fontpostion + 1;
                editText.setText(fontstyle.get(newpostion));
                fontpostion = newpostion;
            }
        }
    });
}
私有编辑文本;
私有图像按钮颜色、字体;
ArrayList bgcolorlist=新的ArrayList(10);
ArrayList fontstyle=新的ArrayList(6);
int fontstylename=R.font.abril_fatface,bgcolor=R.color.white,fontposition=fontstyle.indexOf(fontstylename);
int position=bgcolorlist.indexOf(bgcolor);
私有void初始化(){
cancel=view.findViewById(R.id.backbutton);
createnextbutton=view.findViewById(R.id.nextbutton);
editText=view.findviewbyd(R.id.textpost);
颜色=view.findViewById(R.id.bgcolorbutton);
font=view.findviewbyd(R.id.fontstyle);
}
//代码用于更改背景颜色
私有void backgroundcolormethod(){
bgcolorlist.add(R.color.white);
bgcolorlist.add(R.color.darkGreen);
添加(R.color.colorPrimaryDark);
bgcolorlist.add(R.color.colorAccent);
bgcolorlist.add(R.color.colorPrimary);
bgcolorlist.add(R.color.orange);
添加(R.color.edittextbg5);
添加(R.color.edittextbg4);
添加(R.color.edittextbg3);
添加(R.color.edittextbg2);
添加(R.color.edittextbg1);
editText.setBackgroundColor(bgcolor);
color.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(职位==10){
//Toast.makeText(view.getContext(),“最后一个元素”,Toast.LENGTH_SHORT.show();
setText(bgcolorlist.get(position));
职位=0;
}否则{
int newposition=position+1;
setText(bgcolorlist.get(newposition));
职位=新职位;
}
}
});
}
//更改字体的代码
私有void fontstylemethod(){
添加(R.font.abril_fatface);
添加(R.font.cedarville_草书);
添加(R.font.alfa_slab_one);
添加(R.font.annie_使用你的望远镜);
添加(R.font.aclonica);
添加(R.font.aguafina_脚本);
添加(R.font.arizonia);
editText.setTypeface(Typeface.defaultFromStyle(fontpostion));
font.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(FontPosition==6){
Toast.makeText(view.getContext(),“最后一个元素”,Toast.LENGTH_SHORT.show();
editText.setText(fontstyle.get(position));
Fontposition=0;
}否则{
int newposition=fontposition+1;
editText.setText(fontstyle.get(newposition));
fontpostion=新职位;
}
}
});
}

请帮助我解决这些错误。

尝试将代码更改为:

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


 private void Initialization() {
    cancel = view.findViewById(R.id.backbutton);
    createnextbutton = view.findViewById(R.id.nextbutton);
    editText = view.findViewById(R.id.textpost);
    color = view.findViewById(R.id.bgcolorbutton);
    font = view.findViewById(R.id.fontstyle);
}

//codes are for the background color changing
private void backgroundcolormethod() {

  bgcolorlist.add(R.color.white);
  bgcolorlist.add(R.color.darkGreen);
  bgcolorlist.add(R.color.colorPrimaryDark);
  bgcolorlist.add(R.color.colorAccent);
  bgcolorlist.add(R.color.colorPrimary);
  bgcolorlist.add(R.color.orange);
  bgcolorlist.add(R.color.edittextbg5);
  bgcolorlist.add(R.color.edittextbg4);
  bgcolorlist.add(R.color.edittextbg3);
  bgcolorlist.add(R.color.edittextbg2);
  bgcolorlist.add(R.color.edittextbg1);

  editText.setBackgroundColor(bgcolorlist.get(0));

  color.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if(postion == 10){
            //Toast.makeText(view.getContext(),"last element",Toast.LENGTH_SHORT).show();
            editText.setText(bgcolorlist.get(postion));
            postion = 0;
        }else{
            postion++;
            editText.setText(bgcolorlist.get(postion));
        }
    }
});

}

//codes for changing the fonts 
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.setText(fontstyle.get(postion));
                fontpostion= 0;
            }else{
                fontpostion++;
                editText.setText(fontstyle.get(fontpostion));
            }
        }
    });
}
ArrayList bgcolorlist=新的ArrayList(11);
ArrayList fontstyle=新的ArrayList(7);
int-fontposition=0;
内部职位=0;
私有void初始化(){
cancel=view.findViewById(R.id.backbutton);
createnextbutton=view.findViewById(R.id.nextbutton);
editText=view.findviewbyd(R.id.textpost);
颜色=view.findViewById(R.id.bgcolorbutton);
font=view.findviewbyd(R.id.fontstyle);
}
//代码用于更改背景颜色
私有void backgroundcolormethod(){
bgcolorlist.add(R.color.white);
bgcolorlist.add(R.color.darkGreen);
添加(R.color.colorPrimaryDark);
bgcolorlist.add(R.color.colorAccent);
bgcolorlist.add(R.color.colorPrimary);
bgcolorlist.add(R.color.orange);
添加(R.color.edittextbg5);
添加(R.color.edittextbg4);
添加(R.color.edittextbg3);
添加(R.color.edittextbg2);
添加(R.color.edittextbg1);
editText.setBackgroundColor(bgcolorlist.get(0));
color.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(职位==10){
//Toast.makeText(view.getContext(),“最后一个元素”,Toast.LENGTH_SHORT.show();
setText(bgcolorlist.get(position));
职位=0;
}否则{
职位++;
setText(bgcolorlist.get(position));
}
}
});
}
//更改字体的代码
私有void fontstylemethod(){
添加(R.font.abril_fatface);
添加(R.font.cedarville_草书);
添加(R.font.alfa_slab_one);
添加(R.font.annie_使用你的望远镜);
添加(R.font.aclonica);
添加(R.font.aguafina_脚本);
添加(R.font.arizonia);
editText.setTypeface(Typeface.defaultFromStyle(fontstyle.get(0));
font.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(FontPosition==6){
Toast.makeText(view.getContext(),“最后一个元素”,Toast.LENGTH_SHORT.show();
editText.setText(fontstyle.get(position));
Fontposition=0;
}否则{
Fontposition++;