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

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

Войти
Регистрация
Восстановить пароль
 
gosteev
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 35
#1

Reload Fragment - Android

04.06.2015, 22:36. Просмотров 392. Ответов 2
Метки нет (Все метки)

Такая проблема, по нажатию кнопки поиска у меня возвращается список, под который на фрагменте создаются layout's. Пытаюсь сделать так, чтобы при каждом нажатии кнопки фрагмент перезагружался, чтобы выдача каждый раз была с нуля. Беда в том, что при использовании detach и attach список не отображается вообще. То есть он появляется на какую-то долю секунды и тут же фрагмент "чистится", не могу даже отловить, в какой момент отображается список и исчезает, ибо происходит это не внутри метода (тут я видимо вообще чего-то не понимаю). Метод выглядит так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void searchRestaurantButtonClick(View view) {
 
    final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.detach(fragment);
    ft.attach(fragment);
    ft.commit();
 
    EditText searchEditText = (EditText) findViewById(R.id.searchEditText);
    String searchText = searchEditText.getText().toString();
 
    List<Restaurant> restaurantsList = getRestaurantsList(searchText);
 
    LinearLayout verticalLayout = (LinearLayout) findViewById(R.id.newsFragment);
    for (Restaurant each : restaurantsList) {
        LinearLayout horizontalLayout = new LinearLayout(this);
 
        TextView titleTextView = new TextView(this);
        titleTextView.setText(each.getTitle());
        horizontalLayout.addView(titleTextView);
 
        verticalLayout.addView(horizontalLayout);
    }
}
Если блок с FragmentTransaction закомментировать, то список возвращается и нормально отображается, но, естественно, при повторном запросе там и остается, а результат нового запроса (следующий список) отображается под предыдущим списком. Может кто-то объяснить, в чем подвох? Пробовал также сделать через replace, но тогда при запросе возвращается ошибка:

Java
1
Caused by: java.lang.IllegalStateException: Can't change container ID of fragment FragmentNews{2abadd29 #0 id=0x7f0a0050}: was 2131361872 now 2131361880
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2015, 22:36     Reload Fragment
Посмотрите здесь:

Android Fragment and context
Android OnActivityResult For Fragment
Android Работа с Fragment
DialogFragment в Fragment Android
SwipeRefreshLayout + Fragment Android
Android MapFragment в Fragment
Android TextView and Fragment
Вызов Fragment Android
Анимация Fragment Android
Fragment Android
Fragment и RoboSpice Android
Android Список из fragment

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
04.06.2015, 22:40     Reload Fragment #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
gosteev, ну вообще лучше сделать это с помощью ListView. И при изменении данных просто перезагружать адаптер.
gosteev
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 35
06.06.2015, 20:04  [ТС]     Reload Fragment #3
Spelcrawler, почитал про ListView, действительно имеет смысл через него делать, посоветовали правда в текущей реализации просто лэйаут вот так очистить:
Java
1
verticalLayout.removeAllViews();
Но в дальнейшем буду походу под ListView переделывать, за что тоже спасибо.
Yandex
Объявления
06.06.2015, 20:04     Reload Fragment
Ответ Создать тему
Опции темы

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