ViewPager. Обновление данных в Fragment.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: ViewPager. Обновление данных в Fragment.
>return Fragment2.newInstance(position);
>return Fragment3.newInstance(position);
вот эти вещи вы можете сохранить себе в глобальную переменную и к ней обращаться. Только адаптер сделайте внутри ViewPager, в нём же и глобальные переменные. Дальше через get методы дайте доступ к фрагментам. Будет выглядить как-то так
viewPager.getFragment2().someMethod()
>return Fragment3.newInstance(position);
вот эти вещи вы можете сохранить себе в глобальную переменную и к ней обращаться. Только адаптер сделайте внутри ViewPager, в нём же и глобальные переменные. Дальше через get методы дайте доступ к фрагментам. Будет выглядить как-то так
viewPager.getFragment2().someMethod()
Re: ViewPager. Обновление данных в Fragment.
Спасибо попробую!
Re: ViewPager. Обновление данных в Fragment.
Не помогло, результат приходит, но для обновления всё равно приходиться листать.
вот исходники как я сделал.
вызываю из класса наследуемого от broadcastreciver.
вот кусок.
вот исходники как я сделал.
Код: Выделить всё
public class SlidingTabsColorsFragment extends Fragment {
static int mTabsPosition = 0;
[color=#40FF00] static Fragment4 fragment4;
static public Fragment4 getFragment4() {
return fragment4;
}[/color]
static class SamplePagerItem {
private final CharSequence mTitle;
private final int mIndicatorColor;
private final int mDividerColor;
SamplePagerItem(CharSequence title, int indicatorColor, int dividerColor) {
mTitle = title;
mIndicatorColor = indicatorColor;
mDividerColor = dividerColor;
}
CharSequence getTitle() {
return mTitle;
}
int getIndicatorColor() {
return mIndicatorColor;
}
int getDividerColor() {
return mDividerColor;
}
}
static final String LOG_TAG = "SlidingTabsColorsFragment";
private SlidingTabLayout mSlidingTabLayout;
static public ViewPager mViewPager;
static public List<SamplePagerItem> mTabs = new ArrayList<SamplePagerItem>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTabs.add(new SamplePagerItem(
getString(R.string.tab_stream),
Color.BLUE,
Color.GRAY
));
mTabs.add(new SamplePagerItem(
getString(R.string.tab_messages),
Color.RED,
Color.GRAY
));
mTabs.add(new SamplePagerItem(
getString(R.string.tab_photos),
Color.YELLOW,
Color.GRAY
));
mTabs.add(new SamplePagerItem(
getString(R.string.tab_notifications),
Color.GREEN,
Color.GRAY
));
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_sample, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
mViewPager.setAdapter(new SampleFragmentPagerAdapter(getChildFragmentManager()));
mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
mSlidingTabLayout.setViewPager(mViewPager);
mSlidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
return mTabs.get(position).getIndicatorColor();
}
@Override
public int getDividerColor(int position) {
return mTabs.get(position).getDividerColor();
}
});
}
class SampleFragmentPagerAdapter extends FragmentStatePagerAdapter {
SlidingTabsColorsFragment slid = new SlidingTabsColorsFragment();
SampleFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
if (position == 1) {
return Fragment2.newInstance(position);
}
else if (position == 2){
return Fragment3.newInstance(position);
}
else if (position == 3){
[color=#80FF00] fragment4 = Fragment4.newInstance(position);[/color]
[color=#80FF00] return fragment4; [/color]
}
else
{
return Fragment1.newInstance(position);}
}
private String makeFragmentName(int viewId, int index) {
return "android:switcher:" + viewId + ":" + index;
}
@Override
public int getCount() {
return slid.mTabs.size();
}
@Override
public CharSequence getPageTitle(int position) {
return slid.mTabs.get(position).getTitle();
}
}
вот кусок.
Код: Выделить всё
SlidingTabsColorsFragment slid = new SlidingTabsColorsFragment();
if (message.contains(Maskbalance)) {
result3 = message.substring(8,11);
for (;;){
if (result3.contains(Masktemp1_1)){
break;
}
else {
result3 = null;
result3 = message.substring(8,r);
r++;
}
}
resultb = result3.replace("r.","p.");
r=11;
//myfragment4.callSomePublicMethodBalance(resultb);
slid.getFragment4().callSomePublicMethodBalance(resultb);
}- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: ViewPager. Обновление данных в Fragment.
Я не понимаю. Что значит "листать обновления" ? Обновление приходит и делайте что с ним хотите. вот вам ссылка на фрагмент. хотите - обновляйте, хотите - не обновляйте. Что там листать, выдёргивать, мять, съесть, я понятия не имею. Если данные получены и есть ссылка на фрагмент, то изменяйте. Если что-то не так, то используйте логи, смотрите что не так.Не помогло, результат приходит, но для обновления всё равно приходиться листать.
Либо запишите видео что не так. я не понимаю ваши проблемы. Данные есть, а листать приходится. Вынос мозга.
Re: ViewPager. Обновление данных в Fragment.
Имею ввиду следующее... что когда пришли данные в фрагмент они не отображаются, а отображаютмя только тогда когда обновиться view этого фрагмента, воь именно для этого мне и приходится перелистывать фрагменты что бы обновить view. А я хочу сделать так что бы избежать этой порнографии.
Если снова не понятно постараюсь вечером записать видео.
Если снова не понятно постараюсь вечером записать видео.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: ViewPager. Обновление данных в Fragment.
А они никогда сами собой не отобразятся, если вы не напишете соответствующий код для изменения этих View. Покажите тот метод во фрагменте как вы обновляете данные, которые вам приходят.что когда пришли данные в фрагмент они не отображаются, а отображаютмя только тогда когда обновиться view этого фрагмента
Re: ViewPager. Обновление данных в Fragment.
автор, я вам удивляюсь.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: ViewPager. Обновление данных в Fragment.
Я порой сам себе удивляюсь)!Foenix писал(а):автор, я вам удивляюсь.
Re: ViewPager. Обновление данных в Fragment.
В том то и дело я не знаю что должен быть за код для обновления view фрагмента.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: ViewPager. Обновление данных в Fragment.
крутобл. т.е. вы решили что программа сама поймёт какие данные и где надо обновлять
Re: ViewPager. Обновление данных в Fragment.
нет какие данные и откуда брать программа знает, и в фрагменте public методы приводил, как получает фрагмент данные и из какого класса этот метод вызывается...
вопрос остаётся только в том, что бы обновить view фрагмента, что бы отобразился вновь заполненный textview
вопрос остаётся только в том, что бы обновить view фрагмента, что бы отобразился вновь заполненный textview
Re: ViewPager. Обновление данных в Fragment.
да не фрагмент надо обновлять
а соотв. textView делать им метод setText всего лишь.
я же объясняла - делаешь публичный метод и там обновляешь все вьюшки. Зачем фрагмент трогать-то?
а соотв. textView делать им метод setText всего лишь.
я же объясняла - делаешь публичный метод и там обновляешь все вьюшки. Зачем фрагмент трогать-то?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: ViewPager. Обновление данных в Fragment.
Устал изъяснятся, метод вызывается в setText() записывается результат, так работает но что бы увидеть текст этого textview, приходится листать с текущего фрагмента на фрагмент с position 0 или 1. потому как после поступление данных текущий фрагмент не изменит своего view, а после данных манипуляций меняет.... так вот я хочу избежать этой порнографии.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: ViewPager. Обновление данных в Fragment.
методом порнографии вы объясняете.
покажите как данные передаются во фрагмент и как вы их изменяете, пир их поступлении.
покажите как данные передаются во фрагмент и как вы их изменяете, пир их поступлении.
Re: ViewPager. Обновление данных в Fragment.
Из класса наследуемого с BroadCastReciver, вызывается следующий метод:
fragment4.callSomePublicMethodBalance(resultb);
Собственно сам Fragment4 и его метод.
public void callSomePublicMethodBalance(String str){
state3 = null;
state3 = str;
}
И далее в методе onCreateView
нахожу свой TextView
TextView txtsetb = (TextView) view.findViewById(R.id.setb);
ну а далее передаю свой текст "данные"
txtsetb.setText(state3);
fragment4.callSomePublicMethodBalance(resultb);
Собственно сам Fragment4 и его метод.
public void callSomePublicMethodBalance(String str){
state3 = null;
state3 = str;
}
И далее в методе onCreateView
нахожу свой TextView
TextView txtsetb = (TextView) view.findViewById(R.id.setb);
ну а далее передаю свой текст "данные"
txtsetb.setText(state3);
Re: ViewPager. Обновление данных в Fragment.
Выкладываю видео моей проблемы для большего понимания, чего я хочу добиться!
- Вложения
-
- 123.rar
- Видео
- (753.8 КБ) 193 скачивания
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: ViewPager. Обновление данных в Fragment.
Может проще проект сбросить? я хоть гляну исходники
Re: ViewPager. Обновление данных в Fragment.
Есть ли альтернативный способ скинуть исходники?
Re: ViewPager. Обновление данных в Fragment.
вообще метод фрагмента не правильно вызывать, но черт с ним
в этом методе, а не в методе create нужно обратиться к текствью и сменить им текст.
в этом методе, а не в методе create нужно обратиться к текствью и сменить им текст.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: ViewPager. Обновление данных в Fragment.
пробовал и так...
public void callSomePublicMethodBalance(String str){
state3 = null;
state3 = str;
fragment4 = new Fragment4();
fragment4.onResume();
}
@Override
public void onResume() {
super.onResume();
View v = getView();
TextView asd = (TextView) v.findViewById(R.id.setb);
asd.setText(state3);
}
ситуация не меняется...
вроде как Вы и говорите... но можно и без метода onResume
public void callSomePublicMethodBalance(String str){
state3 = null;
state3 = str;
fragment4 = new Fragment4();
fragment4.onResume();
}
@Override
public void onResume() {
super.onResume();
View v = getView();
TextView asd = (TextView) v.findViewById(R.id.setb);
asd.setText(state3);
}
ситуация не меняется...
вроде как Вы и говорите... но можно и без метода onResume
