В главной активности у меня стоит ViewPager перелистывающий 4 страницы (фрагмента). В 1 фаргменте используется LoaderManager для асинхронной загрузки данных из БД, когда я переключаюсь на соседнюю вкладку все нормально, при переключении на вкладку 3-ю происходит краш
java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.app.LoaderManager android.support.v4.app.FragmentActivity.getSupportLoaderManager()' on a null object reference
Вот код 1-го фрагмента
package com.evico.mycar.activity_fragments;
//Вырезал импорт что бы не загромождать код
public class Fuel_fragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor>
{
DataBase db;
TextView item1;
TextView num_1;
float num1; // переменные для переобразования числа для отсечкеи знаков поле запятой
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
View fuel_fragment = inflater.inflate (R.layout.fragment_fuel, container, false);
db = new DataBase(getActivity());
db.open();
item1 = (TextView) fuel_fragment.findViewById(R.id.last_add);
num_1 = (TextView) fuel_fragment.findViewById(R.id.num_1);
getActivity().getSupportLoaderManager().initLoader(1, null, this);
getActivity().getSupportLoaderManager().getLoader(1).forceLoad();
return fuel_fragment;
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle bnd)
{
return new MyLoader(getActivity(), db, id);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor)
{
switch (loader.getId())
{
case 1:
getActivity().getSupportLoaderManager().getLoader(1).forceLoad();
if (cursor.moveToLast())
{
num1 = cursor.getFloat(0);
}
else
{
num1 = 0;
}
String n1 = new DecimalFormat("#0.0").format(num1) + getResources().getString(R.string.Currency);
num_1.setText(n1);
break;
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader)
{
}
static class MyLoader extends CursorLoader
{
DataBase db;
Cursor cursor;
final int LoaderID;
public MyLoader (Context context, DataBase db, int id)
{
super(context);
this.db = db;
LoaderID = id;
}
@Override
public Cursor loadInBackground()
{
switch (LoaderID)
{
case 1:cursor = db.last_add();
break;
}
return cursor;
}
}
}
я пытался гуглить и кажется проблема в контексте (?) после краша в репорте указаны строчки ошибки
getActivity().getSupportLoaderManager().getLoader(1).forceLoad();
и
public class Fuel_fragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor>
Проблема оказалась в том, что в главной активности, к которой принадлежит ViewPager нужно добавить mViewPager.setOffscreenPageLimit(5);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости