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

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

Войти
Регистрация
Восстановить пароль
 
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
#1

Активити отрабатывает быстрее фрагмента - Программирование Android

11.03.2015, 11:47. Просмотров 365. Ответов 3
Метки нет (Все метки)

Непонятно поведение фрагмента (FragmentPagerAdapter).
Вызываю активити из уведомления, из onCreate вызываю метод meUpdate, где хочу изменить TextView в итемах ListView.
Java
1
2
3
4
View view = (View) pager.getChildAt(0); 
ListView listview = (ListView) view.findViewById(R.id.listView1);
TextView textview = (TextView) listview.findViewWithTag(0);
textview.setText("новый текст");
А view = null. Соответственно ошибка.
Придумал костыль в виде Thread, где циклом жду пока все не станет !null.
Java
1
2
3
4
5
6
7
8
while ((View) pager.getChildAt(0) == null) { }
view = (View) pager.getChildAt(0);
while ((ListView) view.findViewById(R.id.listView1) == null) { }
listview = (ListView) view.findViewById(R.id.listView1);
for (int i = 0; i < listview.getCount(); i++) {
    while ((TextView) listview.findViewWithTag(i) == null) { } // тут иногда тоже крашит.
}
meUpdate();
Кто сталкивался с таким?
Я так понимаю, активити отрабатывает быстрее, чем прорисуются все фрагменты? Может без костыля можно обойтись?

Добавлено через 7 минут
Или придется вызывать метод из фрагмента, через активити не реально сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2015, 11:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Активити отрабатывает быстрее фрагмента (Программирование Android):

Обращение к элементам фрагмента из активити - Программирование Android
Есть необходимость в программе менять значение TextView находящегося во фрагменте. Фрагмент должен выводится в контейнер. И затем я...

Как открыть активити с фрагмента используя кнопку? - Программирование Android
У меня есть tab activity в ней есть фрагменты, так же есть второе tab activity и мне нужно с фрагмента из первого активити перейти во...

Как нажать кнопку основого активити из фрагмента - Программирование Android
Здравствуйте! Столкнулся с такой проблемой, что получается в фрагменте добраться до кнопки, которая в разметке самого фрагмента. Но...

На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити - Программирование Android
Сделал меню в виде ListView. При клике на меню запускаются активити. На эмуляторе работает, на телефоне моем LG все работает. На телефоне...

Как вызвать метод в активити классе из обычного не активити класса? - Программирование Android
Есть активити в котором вводятся логин и пароль. При нажатии кнопки &quot;войти&quot; в отдельном классе &quot;сокетсервер&quot;(+в отдельном потоке)...

Вызов новой активити не из класса активити - Программирование Android
Есть 4 класса: 1) WelcomeActivity; 2) MainActivity; 3) PopUpActivity; 4) Client. Программа работает с сервером и получает...

3
Gabberr
103 / 103 / 17
Регистрация: 13.10.2009
Сообщений: 404
11.03.2015, 13:51 #2
Конечно нужно делать это из самого фрагмента.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
11.03.2015, 14:18  [ТС] #3
Цитата Сообщение от Gabberr Посмотреть сообщение
Конечно нужно делать это из самого фрагмента.
А если их несколько фрагментов, т.к. они грузятся в PagerAdapter? Т.е. вызов фрагмента идет несколько раз.
0
Gabberr
103 / 103 / 17
Регистрация: 13.10.2009
Сообщений: 404
11.03.2015, 14:57 #4
Я так понимаю нужно чтоб при старте активити у первого фрагмента в пейджере поменялся текст например?
Если в пейджере все фрагменты одного типа, можно отличать их по номеру, типа того:
пейджер
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private class MyFragmentPagerAdapter extends FragmentPagerAdapter {
 
    public MyFragmentPagerAdapter(FragmentManager fm) {
      super(fm);
    }
 
    @Override
    public Fragment getItem(int position) {
      return PageFragment.newInstance(position);
    }
 
    @Override
    public int getCount() {
      return PAGE_COUNT;
    }
 
  }


фрагмент
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class PageFragment extends Fragment {
  
  static final String ARGUMENT_PAGE_NUMBER = "arg_page_number";
  
  int pageNumber;
 
  static PageFragment newInstance(int page) {
    PageFragment pageFragment = new PageFragment();
    Bundle arguments = new Bundle();
    arguments.putInt(ARGUMENT_PAGE_NUMBER, page);
    pageFragment.setArguments(arguments);
    return pageFragment;
  }
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    pageNumber = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
  }
  
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment, null);
    
    TextView tvPage = (TextView) view.findViewById(R.id.tvPage);
    tvPage.setText("Page " + pageNumber);
    
    return view;
  }
}


и в зависимости от позиции отрисовать фрагмент по своему.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2015, 14:57
Привет! Вот еще темы с ответами:

Отображение активити поверх другого активити - Программирование Android
Ребят подскажите пожалуйста как такое сделать. Есть активити с картой, по нажатию кнопки настройки, нужно открыть активити с настройками,...

Изменение параметров активити из другого активити - Программирование Android
Как сделать так чтобы из первого активити поменять final ImageView img=(ImageView)findViewById(R.id.image1); ...

Повторное создание фрагмента внутри фрагмента ViewPager - Программирование Android
Доброго времени суток! Использую внутри фрагмента элемент ViewPager, который сам внутри содержит еще два фрагмента-вкладки. При первом...

Не отрабатывает MainActivity - Программирование Android
Здравствуйте! В общем, в моем приложении есть два Frament и Main Activity. В Main Activity прописано меню Navigation Drawer, а фрагменты...


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

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

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