DrawerLayout cannot be cast to LinearLayout при вызове диалогового окна

320
21 декабря 2016, 00:19

Этот вопрос является продолжением темы Создание всплывающего окна с произвольным содержимым. В том вопросе было предложено такое решение:

AlertDialog.Builder adb = new AlertDialog.Builder(this);
View my_custom_view = (LinearLayout) getLayoutInflater().inflate(R.layout.alert, null); //находим разметку
adb.setView(my_custom_view); //ставим ее в окно
TextView ad_tv = (TextView)my_custom_view.findViewById(R.id.ad_tv); //находим TextView
ad_tv.setTextColor(Color.BLACK);
AlertDialog ad = adb.create();
ad.show();

Я вызываю диалог с помощью FloatingActionButton и получаю такой Exception:

android.support.v4.widget.DrawerLayout cannot be cast to android.widget.LinearLayout

Исключение происходит во второй строке. Сразу вопрос: причём тут DrawerLayout? Тем более, я не кастовал его, я кастовал Linear.

В подобных вопросах (как в этом) говорилось, что это действительно имеет отношение к DrawerLayout, но такое решение не помогло:

mDrawerLayout.closeDrawer(Gravity.LEFT);

Прошу Вас не просто написать решение, а объяснить, что происходит.

Answer 1
View my_custom_view = (LinearLayout) getLayoutInflater().inflate(R.layout.alert, null);

Скорее всего в твоем layout`e корневым элементом является DrawerLayout, а ты его хочешь прикостовать к LinearLayout, поэтому и ругается. Сделай так:

View my_custom_view = getLayoutInflater().inflate(R.layout.alert, null);
READ ALSO
Андроид демонстрация обновления

Андроид демонстрация обновления

Необходимо, чтобы после обновления на устройстве при первом входе открывался некий фрагмент, демонстрирующий "Что нового в приложении", так...

313
Использование hazelcast java клиента

Использование hazelcast java клиента

Кто знает, разумно ли использовать hazelcast java client на клиентской стороне для подключения к hazelcast кластеру, или следует использовать только для...

318
Не отображается изображения при помощи Picasso

Не отображается изображения при помощи Picasso

Необходимо в галерее выбрать изображения и вывести их в imageViewЗапуск intenta:( библиотека)

426