В главной активности у меня стоит 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);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день! Есть listener, который слушает очередь JMS MQ и отправляет ответ по умолчаниюВозможно ли добавить вторую очередь для ответов и сформировать...
Написал java request для Jmeter,который получает объект по ключу из hazelcastОбъект я вижу только в логах Jmeter
Читаю Хорстмана Java 8 изданиеВ одной из глав используются статические методы интерфейса Comparator
В активити с BottomNavigation всего 3 путкта меню и 3 фрагмента которые переключаются при навигацииДля одного из них нужно всегда хранить состояние