Есть созданный NavigationDrawer
, к нему подключены табы. Получается так, что первый самый Item
с табами (фрагментами) в дровере работает корректно, а уже 2-ой выводит ту же информацию (TextView
), ту что находиться в первом Item
и в его табах.
Подскажите как это исправить, в коде, если можно?
Вот, собственно, сам код 2-ого итема и его табов в активити:
MainActivity:
public class MainActivity extends AppCompatActivity {
private static final int LAYOUT = R.layout.activity_main;
private Drawer.Result drawerMenu;
private ViewPager viewPager;
private Toolbar toolbar;
private TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.myTheme2);
super.onCreate(savedInstanceState);
setContentView(LAYOUT);
initTabs();
// Инициализируем Toolbar
toolbar = (Toolbar)findViewById(R.id.toolbar);
if (toolbar !=null) {
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
initializeNavigationDrawer(toolbar);
}
private void initTabs() {
viewPager = (ViewPager) findViewById(R.id.viewPager);
// Инициализируем TabLayout
tabLayout = (TabLayout)findViewById(R.id.tabLayout);
TabFragmentFish adapter = new TabFragmentFish(getSupportFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
@Override
public void onBackPressed() {
if (drawerMenu != null && drawerMenu.isDrawerOpen()) {
drawerMenu.closeDrawer();
} else {
super.onBackPressed();
}
}
//Инициализация Дравера
private void initializeNavigationDrawer(Toolbar toolbar) {
drawerMenu = new Drawer()
.withActivity(this)
.withToolbar(toolbar)
.withActionBarDrawerToggle(true)
.withHeader(R.layout.drawer_header)
//Добавление Итемов в шторку
.addDrawerItems(
new PrimaryDrawerItem()
.withName(R.id.aqua_fish)
.withIdentifier(1)
.withIcon(FontAwesome.Icon.faw_circle),
new PrimaryDrawerItem()
.withName(R.id.aqua_plant)
.withIdentifier(2)
.withIcon(FontAwesome.Icon.faw_leaf),
new PrimaryDrawerItem()
.withName(R.id.aqua_water)
.withIdentifier(3)
.withIcon(FontAwesome.Icon.faw_tint),
new PrimaryDrawerItem()
.withName(R.id.aqua_lighting)
.withIdentifier(4)
.withIcon(FontAwesome.Icon.faw_lightbulb_o),
new PrimaryDrawerItem()
.withName(R.id.aqua_co2)
.withIdentifier(5)
.withIcon(FontAwesome.Icon.faw_circle),
new PrimaryDrawerItem()
.withName(R.id.aqua_filtration)
.withIdentifier(6)
.withIcon(FontAwesome.Icon.faw_filter),
//--------------------------------------------- Secondary
new DividerDrawerItem(),
new SecondaryDrawerItem()
.withName(R.id.about)
.withIdentifier(7),
new SecondaryDrawerItem()
.withIdentifier(8)
.withName(R.id.exit))
//Реализуем клик по айтэмам
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id, IDrawerItem drawerItem) {
switch (drawerItem.getIdentifier()){
case 1:
TabFragmentFish adapter = new TabFragmentFish(getSupportFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
break;
case 2:
TabFragmentAdapterPlants adapterPlants = new TabFragmentAdapterPlants(getSupportFragmentManager());
viewPager.setAdapter(adapterPlants);
tabLayout.setupWithViewPager(viewPager);
break;
//Мини окошко "Об авторе с закрытием ОК"
case 7:
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this, R.style.AppCompatAlertDialogStyle);
builder
.setTitle("Об авторе")
.setMessage("Автор:Артем Мишуровский"+"\n\nEmail: artm.mishurovskiy@gmail.com")
.setCancelable(false)
.setNegativeButton("Ок", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
break;
//Выход из программы
case 8:
finish();
break;
}
}
})
.build();
}
}
Сам адаптер и в нем созданы табы:
public class TabFragmentAdapterPlants extends FragmentPagerAdapter {
//Create massive
private String[] tabs;
private FragmentTransaction fTrans;
public TabFragmentAdapterPlants(FragmentManager fm) {
super(fm);
//Create tabs
tabs= new String[] {
"Растения",
"Болезни растений",
"Водоросли"
};
}
//Получение позиции Табов что б передать их в свитч
@Override
public CharSequence getPageTitle(int position) {
return tabs[position];
}
//Переключение между фрагменами с помощью позиции 0,1,2
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return FragmentPlants.getInstance();
case 1:
return FragmentsPlantsDisease.getInstance();
case 2:
return FragmentPlantsAlgae.getInstance();
}
return null;
}
//табс в ширину !!
@Override
public int getCount() {
return tabs.length;
}
}
Фрагмент, на который переключается адаптер:
public class FragmentPlants extends Fragment {
private static final int LAYOUT = R.layout.fragments_plants2;
private View view;
public static FragmentPlants getInstance(){
Bundle args = new Bundle();
FragmentPlants fragmentPlants = new FragmentPlants();
fragmentPlants.setArguments(args);
return fragmentPlants;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(LAYOUT, container, false);
return view;
}
}
Или у Вас одинаковый layout
для фрагментов, или viewPager
не обновляет адаптер.
Во втором случае может поможет этот ответ
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я проблему свою уже описывал но сейчас сделаю это более конкретноПрограмма стоит на сервере, работает день, каждую ночь программа падает
Кто может дать качественную документацию по созданию чата с хабров и тд
Услышал, что современные веб-приложения строятся из независимых сервисовУ меня есть сервер tomcat, java ee и сервер Mysql