Описание:
На какое-то время я пришел к поиску кода следующей строки:
handler.removeCallbacksAndMessages(null);
Я пробовал, но решить не смог моя проблема. Это ошибка, которую я получаю:
java.lang.IllegalStateException: Fragment fragment_languages{f33796} not attached to a context.
at androidx.fragment.app.Fragment.requireContext(Fragment.java:696)
at androidx.fragment.app.Fragment.getResources(Fragment.java:760)
at com.example.ui.INICIO.CATEGORIAS.LANGUAGES.fragment_languages.fillRecycler4(fragment_languages.java:173)
at com.example.ui.INICIO.CATEGORIAS.LANGUAGES.fragment_languages.access$200(fragment_languages.java:21)
at com.example.ui.INICIO.CATEGORIAS.LANGUAGES.fragment_languages$3.run(fragment_languages.java:61)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6694)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
Я вызываю три обработчика, которые загружают элементы в три разных представления переработчика и в разное время (это потому, что, если я загружаю их без ожидания, приложение вылетает при использовании так много памяти или что-то в этом роде).
Проблема:
Пользователь "тролля" может просто войти в мое приложение, а затем получить этот фрагмент, у которого есть мой 4 обработчика и нажмите кнопку «Назад», как только он войдет, и это вызовет sh мое приложение тоже. Вот почему я хочу остановить обработчики (при нажатии кнопки назад).
Что я могу сделать, чтобы исправить эту ошибку? : (
Что нужно знать:
Мой фрагмент с обработчиками находится внутри действия (конечно). Кнопка возврата находится в действии ( не во фрагменте).
"Языки фрагментов" JAVA код:
father p = new father();
fillRecycler1();
p.handler.postDelayed(new Runnable() {
@Override
public void run() {
fillRecycler2();
}
},1500);
p.handler.postDelayed(new Runnable() {
@Override
public void run() {
fillRecycler3();
}
},2500);
p.handler.postDelayed(new Runnable() {
@Override
public void run() {
fillRecycler4();
}
},3500);
Активность (с кнопкой возврата) Код:
@Override
public void onBackPressed(){
if(p.contador == 0){
Intent intent = new Intent(categorias.this, MainActivity.class);
finish();
startActivity(intent);
p.handler.removeCallbacksAndMessages(null);
p.contador++;
p.handler.postDelayed(new Runnable(){
@Override
public void run(){
p.contador = 0;
}
},500);
}
}
Редактировать (класс отца java код):
public class father{
public int contador = 0;
public String aux = null;
public Handler handler = new Handler();
public Window window;
}
Большое спасибо за чтение и я sh Я мог бы решить эту проблему.