@Drew20
Недопрограммист Android))

Почему не показывает нужный фрагмент при выборе пункта меню nav drawer android?

У меня в программе есть два фрагмента каждый из которых отвечает за один вид сообщений - входящие или исходящие. Есть адаптер который реализует выбор этих фрагментов. И я хочу сделать так, чтобы при выборе пункта меню, я видел определенный фрагмент. Вот мой адаптер:
public class PagerAdapter extends FragmentStatePagerAdapter {
    private int mNoOfTabs;

    public PagerAdapter(FragmentManager fm) {
        super(fm);
        //this.mNoOfTabs = NumberOfTabs;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position)
        {
            case 0:
                return new Received();
            case 1:
                return new Sent();
               /* default:
            return new Received();*/
        }

        return new Sent();
    }

    @Override
    public int getCount() {
        return mNoOfTabs;
    }
}

дальше вот выбор пунктов меню:
public boolean onNavigationItemSelected(@NonNull MenuItem item) {


        int id = item.getItemId();
        fragmentManager = getSupportFragmentManager();
       /* mAdapter = new PagerAdapter(getSupportFragmentManager());
        mPager = findViewById(R.id.frame);*/
        ft = fragmentManager.beginTransaction();
        if (id == R.id.received) {
            ft.replace(R.id.frame, new Received());
        } else if (id == R.id.sended) {
            ft.replace(R.id.frame, new Sent());
        }


        ft.commit();


        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }


и вот адаптер в меню:
mAdapter = new PagerAdapter(getSupportFragmentManager());
mPager = findViewById(R.id.frame);


но у меня выводит только один фрагмент - Входящие сообщения, а вот исходящие сообщения у меня не показывает. Может я где-то что-то не дописал, или еще где-то ошибка.
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 1
@klim76
android/java/sql
if (id == R.id.received) {
ft.replace(R.id.frame, new Received());
} else if (id == R.id.sended) {
ft.replace(R.id.frame, new Sent());
}

вам нужно тут обратиться к своему адаптеру и указать какой item ему отобразить? а не вот это вот всё
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы