У меня есть Нижняя Навигация с фрагментом и Retrofit для вызова API
Я звоню loadFragment
для переключения фрагментов, как показано ниже
private boolean loadFragment(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
return true;
}
return false;
}
Проблема в том, что мое приложение вылетает, если я начинаю случайный щелчок и быстро меняю фрагмент, когда я проверяю logcat, он показывает NPE при настройке некоторых данных.
Мой фрагмент состоит из следующих методов
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_current, container, false);
unbinder = ButterKnife.bind(this, view);
context = getActivity();
callCategoryAPI();
return view;
}
callCategory()
является вызовом модификации api в отдельном классе контроллера и возвращает ответ через interface
, а затем устанавливает данные.
Так что я подозреваю, что мой API возвращает ответ (как его асинхронный), но представления недоступны, так как пользователь изменяет фрагмент (быстро), поэтому представления являются нулевыми.
Я уже пробовал setuserVisibleHint
также пробовал блокировать клики в течение 1200 мс, а также проверял, создан ли мой фрагментный вид, Как остановить этот сбой? и сделать модернизированный вызов Lifecycle зависимым?
Logcat
at com.example.CurrentFragment $ 1.onApiSuccess (CurrentFragment.java:82)
в com.example.services.current_statement.CurrentStatementController $ 2.onResponse (CurrentStatementController.java:91)
at retrofit2.ExecutorCallAdapterFactory $ ExecutorCallbackCall $ 1 $ 1.run (ExecutorCallAdapterFactory.java:70)
на android.os.Handler.handleCallback (Handler.java:790)
на android.os.Handler.dispatchMessage (Handler.java:99)
на android.os.Looper.loop (Looper.java:171)
на android.app.ActivityThread.main (ActivityThread.java:6606)
в java.lang.reflect.Method.invoke (Method.java)
в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:518)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:823)
-
Неустранимое исключение: java.lang.NullPointerException: попытка вызвать
виртуальный метод void
android.widget.TextView.setText (java.lang.CharSequence) 'с нулевым значением
ссылка на объект
в com.example.fragment.statements.CurrentFragment $ 1.onApiSuccess (CurrentFragment.java:82)
в com.example.services.current_statement.CurrentStatementController $ 2.onResponse (CurrentStatementController.java:91)
at retrofit2.ExecutorCallAdapterFactory $ ExecutorCallbackCall $ 1 $ 1.run (ExecutorCallAdapterFactory.java:70)
на android.os.Handler.handleCallback (Handler.java:790)
на android.os.Handler.dispatchMessage (Handler.java:99)
на android.os.Looper.loop (Looper.java:171)
на android.app.ActivityThread.main (ActivityThread.java:6606)
в java.lang.reflect.Method.invoke (Method.java)
в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:518)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:823)