4 / 4 / 2
Регистрация: 26.10.2014
Сообщений: 138

Выход с вылетом из приложения

17.07.2020, 08:47. Показов 1253. Ответов 4

Author24 — интернет-сервис помощи студентам
Приложение чат. Произвожу авторизацию, поле авторизации нажимаю на прописанную кнопку выхода из личного кабинета, меня кидает на начальную форму, далее я нажимаю на системную кнопку выхода, на которую прописан выход, если на нее нажать быстро 2 раза, но выход из приложения не происходит, а меня возвращает на форму личного кабинета, но если в этот момент я решаю переключится между вкладками, то меня выкидывает из приложения и указывает ошибку. Вот логи и собственно код, куда меня эти логи направили:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2020-07-17 08:39:39.863 13894-13894/com.android.mashery E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.android.mashery, PID: 13894
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference
        at Fragments.ProfileFragment.onCreateView(ProfileFragment.java:68)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802)
        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
        at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2243)
        at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:654)
        at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:146)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1244)
        at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:669)
        at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:631)
        at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:612)
        at android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:2831)
        at android.support.design.widget.TabLayout.dispatchTabSelected(TabLayout.java:1608)
        at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1601)
        at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1569)
        at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1874)
        at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:2059)
        at android.view.View.performClickInternal(View.java:7425)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28296)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
 
        View view = inflater.inflate(R.layout.fragment_profile, container, false);
 
        image_profile = view.findViewById(R.id.profile_image);
        username = view.findViewById(R.id.username);
 
        storageReference = FirebaseStorage.getInstance().getReference("uploads");
 
        fuser = FirebaseAuth.getInstance().getCurrentUser();
        reference = FirebaseDatabase.getInstance().getReference("Users").child(fuser.getUid());
 
 
 
            reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (isAdded()) {
                    User user = dataSnapshot.getValue(User.class);
                    username.setText(user.getUsername());
                    if (user.getImageURL().equals("default")) {
                        image_profile.setImageResource(R.mipmap.ic_launcher);
                    } else {
                        Glide.with(getContext()).load(user.getImageURL()).into(image_profile);
                    }
                }
            }
 
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
 
            }
        });
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.07.2020, 08:47
Ответы с готовыми решениями:

Как сделать выход из приложения по кнопке выход
Привет! Имеется 3 активити. А1 - запускается при запуске приложения(анимация) А2 - меню ( с кнопкой выход) А3 - мейн...

Что делать с вылетом
Винду переустановил сегодня из-за данной ошибки,думал после переустановки винды,всё нормализуется,надеюсь,что найдутся люди,которые мимо не...

Выход из приложения
Здравствуйте. Возникла необходимость сохранять состояния игры при выходе из игры нажатием на центральную кнопку или нажатием стрелки назад...

4
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
17.07.2020, 11:39
Эта ошибка такая же, как и в предыдущей теме.
0
4 / 4 / 2
Регистрация: 26.10.2014
Сообщений: 138
17.07.2020, 16:21  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Эта ошибка такая же, как и в предыдущей теме
Это я видел, но суть не в этом, а в том, что пользователь находясь в личном кабинете нажимает на кнопку выхода из него, его отправляет на форму авторизации\регистрации, а если на форме авторизации\регистрации пользователь нажал на системную кнопку возврата на устройстве, то должен происходить выход из приложения, а не возврат в личный кабинет

Вот такой у меня код на стартовую страницу:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class StartActivity extends AppCompatActivity {
 
    Button login, register;
 
    FirebaseUser firebaseUser;
 
    private static long back_pressed;
 
    @Override
    public void onBackPressed() {
        if (back_pressed + 2000 > System.currentTimeMillis())
            super.onBackPressed();
        else
            Toast.makeText(getBaseContext(), "Нажмите еще раз, чтобы выйти!",
                    Toast.LENGTH_SHORT).show();
        back_pressed = System.currentTimeMillis();
    }
 
    @Override
    protected void onStart() {
        super.onStart();
 
        firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
 
        //Проверка 
        if (firebaseUser != null) {
            Intent intent = new Intent(StartActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
        }
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);
 
 
 
        login = findViewById(R.id.login);
        register = findViewById(R.id.register);
 
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(StartActivity.this, LoginActivity.class));
            }
        });
 
        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(StartActivity.this, RegisterActivity.class));
            }
        });
    }
}
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
17.07.2020, 16:34
Лучший ответ Сообщение было отмечено daniel_kobica как решение

Решение

Ну значит запускай активити с флагом, который не записывает их в стек (напр. FLAG_ACTIVITY_NO_HISTORY).
1
4 / 4 / 2
Регистрация: 26.10.2014
Сообщений: 138
18.07.2020, 22:33  [ТС]
Супер, работает, ещё раз огромное спасибо за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.07.2020, 22:33
Помогаю со студенческими работами здесь

Выход из приложения
У меня в меню есть кнопка Файл->Выход. Все перелопатила, не могу найти нигде, как сделать простой Выход (закрытие приложения). Помогите,...

Выход из приложения
Здравствуйте, снова я с тупыми вопросами по winapi. Пытаюсь сделать некое подобие калькулятора, который мог бы(пока только) складывать...

Выход из приложения
Имеется 2 файла: file1.py - файл, который позволяет получить доступ к file2.py. file1.py скрывается и вызывает класс file2.py. Так вот,...

Выход из приложения
Доброго времени суток. Помогите решить такую проблему... Есть форма и на ней кнопка выход. Нужно, чтобы и при нажатии на крестик в...

Try catch выход из приложения
Всем здравствуйте! При написании программы образовалась проблема, не могу понять как решить. При запуске программы в реестре создается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru