Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
prokopov
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
#1

Как правильно пересоздать ViewSub? - Программирование Android

23.03.2016, 13:10. Просмотров 248. Ответов 7

Layout должен создаваться на активити по нажатию на кнопку, для этого использую ViewStub! Суть такова: при нажатии кнопки проверяю существует ли ViewStub, если нет - его создаю и вывожу на экран, если он есть - его нужно убрать!

Java
1
2
3
4
5
6
7
8
9
10
11
ViewStub viewStub = null;
View v;
public void onClick(View view) {
if (viewStub == null){
    viewStub = (ViewStub) finalView.findViewById(R.id.space);
      v = viewStub.inflate();
}else if (viewStub != null){
      v.setVisibility(View.GONE);
       viewStub = null;
}
}

Все работает, когда первый раз нажимаю layout отображается, при втором нажатии он скрывается!

Но при третьем нажатии на кнопку он должен распознаваться, как не существующий и заново создаваться, но этого не происходить и выбрасывает ошибку :

FATAL EXCEPTION: main java.lang.NullPointerException at com.vitaliy.useexpandablelistview.MainActivity$ListAdapter$1.onClick(MainActivity.java:167)

Вроде все понятно, что у меня
Java
1
viewStub = null
, но не понятно почему так происходит, ведь я ,когда его не существует - создаю его заново !!! ???

Помогите решить проблему !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2016, 13:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как правильно пересоздать ViewSub? (Программирование Android):

Как пересоздать ViewSub? - Программирование Android
Искал в гугле но ничего не нашел.Суть вот в чем:есть меню,при нажатии на определенную кнопку должен загрузиться определенный layout...

При клики в BaseAdapter меняется массив строк, как пересоздать ListView с новым массивом? - Программирование Android
Здравствуйте! Имеется класс: package ru.contedevel.mathworker; import java.util.ArrayList; import...

Подскажите как пересоздать ссылку на таблицу? И не чревато ли это последствиями? - Базы данных
Подскажите как пересоздать ссылку на таблицу (nickname) в которой уже есть данные? И не чревато ли это последствиями? И еще как...

Как пересоздать (изменить размер) двумерный массив при вызове, например, функции - C#
Как пересоздать (изменить размер) двумерный массив при вызове, например, функции? Создаю так: ... private int FoxField; ... ...

.NET 4.x Пересоздать dataGridView - C#
Всем привет)) Есть код - private void button1_Click(object sender, EventArgs e) { int x = 0; ...

Пересоздать форму - Lazarus
Требуется пересоздать форму, т.е. прописана команда при создании формы, и мне нужно, чтобы она выполнилась еще раз.

7
Pablito
2503 / 1987 / 619
Регистрация: 12.05.2014
Сообщений: 6,930
Завершенные тесты: 1
23.03.2016, 13:19 #2
Цитата Сообщение от prokopov Посмотреть сообщение
правельно


код бредовый, его вытереть и сформулировать что конкретно надо сделать
0
prokopov
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
23.03.2016, 13:24  [ТС] #3
Паблито, При нажатии на кнопку нужно создавать layout, при повторном нажатии (если layout существует)прятать его.
0
Pablito
2503 / 1987 / 619
Регистрация: 12.05.2014
Сообщений: 6,930
Завершенные тесты: 1
23.03.2016, 13:26 #4
зачем его создавать каждый раз?
0
prokopov
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
23.03.2016, 13:49  [ТС] #5
Паблито, а как это правильно сделать ?
0
Pablito
2503 / 1987 / 619
Регистрация: 12.05.2014
Сообщений: 6,930
Завершенные тесты: 1
23.03.2016, 13:56 #6
а что нужно сделать?
0
prokopov
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
23.03.2016, 13:58  [ТС] #7
Паблито, при нажатии кнопки показывать leyout, потом при повторном нажатии если он отображается скрывать. И так далее - если нажимаем и его нет - показывать, если есть - скрывать )))
0
Pablito
2503 / 1987 / 619
Регистрация: 12.05.2014
Сообщений: 6,930
Завершенные тесты: 1
23.03.2016, 14:03 #8
можно в разметке создать этот лаяут таким как он должен быть и задать ему свойство visibility = GONE
а в onClick проверять примерно так
Java
1
2
        if (myCoolLayout.isShown()) myCoolLayout.setVisibility(View.GONE);
        else myCoolLayout.setVisibility(View.VISIBLE);
0
23.03.2016, 14:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2016, 14:03
Привет! Вот еще темы с ответами:

Пересоздать форму (обновить) - Delphi
Нужно сделать так, чтобы при нажатии на кнопку происходило что-то в этом роде: Form1.Free; Form1.Create; Form1.Show; Ну я...

Изменить и пересоздать текстовый файл - Free Pascal
Всем привет. Задали задачку такую: нужно в имеющемся текстовом файле изменить знаки и переставить некоторые слова. Выглядит это примерно...

Наиболее быстро и надежно пересоздать столбец - Oracle
Как наиболее быстро и надежно пересоздать столбец? Процедура вызывается в ходе выполнения java-класса. Обрабатываю два ексепшна в ходе...

В проекте с Entity Framework 6.0 пересоздать файл *.edmx - C#
Можно ли в готовом проекте с Entity Framework 6.0 пересоздать файл *.edmx ? Потребовалось в SQL Server добавить Хранимую Процедуру....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru