android.support.constraint.ConstraintLayout не может быть приведен к android.widget.Button Error - PullRequest
0 голосов
/ 03 мая 2018

XML-файл в картинках

xml file

more of xml file

Ниже приведен мой фрагмент кода:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //create a button for the letter at this position in the alphabet
        Button letterBtn;
        if (convertView == null) {
            //Inflate the button layout

Я получаю сообщение об ошибке в следующей строке:

        letterBtn = (Button)letterInf.inflate(R.layout.letter, parent, false);
    } else {
        letterBtn = (Button) convertView;
    }
    //set the text to this letter
    letterBtn.setText(letters[position]);
    return letterBtn;
}

И ошибка:

android.support.constraint.ConstraintLayout cannot be cast to android.widget.Button

Я не уверен, как от него избавиться

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Я думаю, что вы используете вид кнопки с родителем макета Constraint, который не приведен к кнопке, поэтому найдите вид кнопки из макета строки xml, и тогда вы сможете легко выполнить связанную с кнопкой задачу.

Для уточнения, пожалуйста, вставьте сюда xml

0 голосов
/ 03 мая 2018

У вас всегда будет ошибка, как сейчас. Если вы измените эту строку

letterBtn = (Button)letterInf.inflate(R.layout.letter, parent, false);

до

convertView =letterInf.inflate(R.layout.letter, parent, false);

у вас все еще будет ошибка в этой (letterBtn = (Button) convertView) точке. Потому что вы не можете разыграть ConstraintLayout в Button . Если вы хотите восстановить свою кнопку, просто дайте ей идентификатор, подобный этому android:id="@+id/my_button_id", а затем, надуйте его в своем коде Java следующим образом:

convertView =letterInf.inflate(R.layout.letter, parent, false);
letterBtn = (Button)convertView.findViewById(R.id.my_button_id);

таким образом у вас будет доступ к вашей кнопке в вашем коде.

Сердечно, Матье

РЕДАКТИРОВАТЬ: Кстати, ваш код выглядит внутри адаптера. Какой смысл в этом. Меня немного смущает тот факт, что вы возвращаете только свою кнопку.

0 голосов
/ 03 мая 2018

изменить эту строку ..

convertView =letterInf.inflate(R.layout.letter, parent, false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...