У меня есть ViewPager в нем находится фрагменты. Во фрагменте есть RecyclerView, у которого прописано событие для перехода на новый фрагмент. Все правильно переходит, но при нажатие назад, фрагмент становиться пустой, и отрисовывает данные только после перелистывание.
Java |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| holder.itemView.setOnClickListener(new View.OnClickListener()
{
@Override
public
void onClick(final View view) {
FragmentTransaction fragmentTransaction;
Fragment_texnika_adapter fragment_texnika_adapter = new Fragment_texnika_adapter();
fragmentTransaction = activity.getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content_main, fragment_texnika_adapter);
fragmentTransaction.addToBackStack(null);
Bundle bundle = new Bundle();
bundle.putParcelable("statictika", model.getTexnika_sobr());
fragment_texnika_adapter.setArguments(bundle);
fragmentTransaction.commit();
mListener.onContentItemClicked(model);
}
} |
|
Сам ViewPager
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
| public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
private Map<Integer, String> mFragmentTags;
private FragmentManager mFragmentManager;
FragmentActivity fragmentActivity;
private static int NUM_ITEMS = 4;
public int getItemPosition(Object object) {
return POSITION_NONE;
}
public SectionsPagerAdapter(FragmentManager fragmentManager, FragmentActivity fragmentActivity) {
super(fragmentManager);
mFragmentManager = fragmentManager;
mFragmentTags = new HashMap<Integer, String>();
this.fragmentActivity = fragmentActivity;
}
// Returns total number of pages
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Сводка";
case 1:
return "Награды";
case 2:
return "Статистика";
case 3:
return "Техника";
}
return null;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return Fragment_cvodka.newInstance();
case 1:
return Fragment_dostizenie.newInstance();
// return Fragment_cvodka.newInstance();
case 2:
return Fragment_statistika.newInstance();
case 3:
return Fragment_texnika.newInstance();
default:
return null;
}
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Object object = super.instantiateItem(container, position);
if (object instanceof Fragment) {
Fragment fragment = (Fragment) object;
String tag = fragment.getTag();
mFragmentTags.put(position, tag);
}
return object;
}
public Fragment getFragment(int position) {
Fragment fragment = null;
String tag = mFragmentTags.get(position);
if (tag != null) {
fragment = mFragmentManager.findFragmentByTag(tag);
}
return fragment;
} |
|
}