Я начал кодировать небольшое приложение, используя предварительно установленный вкладкой Layout Layout с помощью фрагментов (SectionsPagerAdapter, ViewPager).Android: доступ к экземпляру фрагмента из MainActivity
У меня есть задача, которая выполняется в главном/Ui нить MainActivity.class, которая в одной точке показывает диалоговое окно с помощью метода OnClick
@Override
public void onClick(DialogInterface dialog, int which) {
category = eventsToDisplay.get(which);
averageFragment.category = category;
dialog.dismiss();
}
Но я не могу получить averageFragment.category = category;
назначение на работу.
В методе onCreate MainActivity я вызываю averageFragment = (AverageFragment) getSupportFragmentManager().findFragmentByTag(AverageFragment.tag);
, но это дает мне исключение NullPointerException.
Я уже пробовал следующие решения (большинство из которых с этого сайта):
getSupportFragmentManager().findFragmentById(R.id.fragment_average)
getSupportFragmentManager().findFragmentByTag(AverageFragment.tag)
< - в основном статическая переменная, созданная при создании экземпляра фрагмента.mSectionsPageAdapter.getItem(1)
все из которых дают мне либо NPE или IllegalStateException.FragmentNotAttachedToView.
Другое соответствующий код:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
switch (position) {
case 0:
return InspectionFragment.newInstance(position + 1);
case 1:
return AverageFragment.newInstance(position + 1);
case 2:
return RegulationsFragment.newInstance(position + 1);
}
return null;
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.title_section1).toUpperCase(l);
case 1:
return getString(R.string.title_section2).toUpperCase(l);
case 2:
return getString(R.string.title_section3).toUpperCase(l);
}
return null;
}
}
Любые идеи о том, как получить доступ фрагмент от основной деятельности?
Работает отлично! Благодаря :) – suushiemaniac