Различные виды в макете для другого экрана - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть приложение, разработанное для планшета, и теперь я хочу сделать макет для телефона, но мой макет телефона имеет другие представления и в некоторых моментах различную функциональность, и я сталкиваюсь с такой проблемой: layout-sw600dp/layout_a.xml(for tablet) имеет 2 кнопки и layout-sw320dp/layout_a.xml(for phone)теперь в коде только один, я установил два слушателя, и приложение вылетает с исключением нулевого указателя, потому что вторая кнопка отсутствует в макете.Любые предложения, как я могу реализовать различные функции для этих экранов?

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Использовать getIdentifier() метод.Если он возвращает ненулевое значение, ресурс существует, иначе он не существует.

String button_id="your_button_id";
//where button id is defined as android:id="@+id/your_button_id"

String resource_type= "id";

getResources().getIdentifier(button_id, resource_type, getApplicationContext().getPackageName());
0 голосов
/ 20 декабря 2018

Первый шаг:.Зная, какой макет загружен, вы можете сделать это, используя приведенный ниже способ

Ссылка: Как определить, какой макет выбран Android в моем приложении?

Шаг второй:

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

If (layout == tablayout) {Загрузить кнопку 1 и кнопку 2.} else {загрузить только кнопку 1,}

Надеюсь, это сработает.

Спасибо.

0 голосов
/ 20 декабря 2018

Установите логический флаг (например, isUsingTabletLayout), и при загрузке макета планшета оберните привязку представлений и настройку слушателей внутри этой логической проверки.Если значение равно false, код пропустит просмотры, которых нет в телефоне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...