Перезапуск активности при нажатии кнопки навигации назад - PullRequest
0 голосов
/ 17 октября 2019

Таким образом, я в основном реализовал метод на спине нажатой для моего уведомления, где я пытаюсь назначить соответствующее действие, и когда одним нажатием кнопки он возвращает его на вкладки основного действия. Это работает нормально, когда пользователь вошел в систему, но когда человек не вошел в MainActivity. у него есть функция sendtostart, которая перенаправляет человека на страницу входа. На этом Начать деятельность, когда я нажимаю кнопку "Назад". Деятельность продолжает перезапускать себя, а не идти в фоновом режиме. Я попытался переопределить метод с нажатой спиной там, но не смог.

Мой код MainActivity выглядит следующим образом:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mAuth = FirebaseAuth.getInstance();
        mRootRef = FirebaseDatabase.getInstance().getReference();

        mToolbar = (Toolbar) findViewById(R.id.main_app_bar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setTitle("Chit Chat");

        if (mAuth.getCurrentUser() != null) {


            mUserRef = FirebaseDatabase.getInstance().getReference().child("Users").child(mAuth.getCurrentUser().getUid());

        }


        //Tabs
        mViewPager = (ViewPager) findViewById(R.id.tab_pager);
        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        mViewPager.setAdapter(mSectionsPagerAdapter);

        mTabLayout = (TabLayout) findViewById(R.id.main_tab);
        mTabLayout.setupWithViewPager(mViewPager);


        ProcessLifecycleOwner.get().getLifecycle().addObserver(new LifecycleObserver() {
            @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
            public void onStop(){
                FirebaseUser currentUser = mAuth.getCurrentUser();
                if(currentUser != null) {
                    mUserRef.child("online").setValue(ServerValue.TIMESTAMP);
                }
            }

            @OnLifecycleEvent(Lifecycle.Event.ON_START)
            public void onStart(){
                //onstart action here
                // Check if user is signed in (non-null) and update UI accordingly.
                FirebaseUser currentUser = mAuth.getCurrentUser();

                if(currentUser != null && currentUser.isEmailVerified()){
//                    intentExtra = getIntent().getStringExtra("backPressed");

                    mUserRef.child("online").setValue("true");


                } else {
                    sendToStart();

                }


                }


        });

где sendtoStart:

    private void sendToStart() {

    Intent startIntent = new Intent(MainActivity.this, StartActivity.class);
    startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

    startActivity(startIntent);
    finish();

}

Вот как я перехожу на вкладки в зависимости от значения намерения:

  @Override
    protected void onResume() {
        super.onResume();
        if(intentExtra != null) {
            if (intentExtra.equals("notification")) {
                TabLayout tabLayout = (TabLayout) findViewById(R.id.main_tab);
                TabLayout.Tab tab = tabLayout.getTabAt(1);
                tab.select();


            }


            }
        }

Пожалуйста, дайте мне знать, если вам нужна какая-то часть кода. Я перепробовал все, от поиска решения в интернете до отладки себя, но не смог найти решение.

1 Ответ

1 голос
/ 17 октября 2019

Попробуйте с этим:

Intent startIntent = new Intent(MainActivity.this, StartActivity.class);
    // set the new task and clear flags
startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(startIntent);
finish();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...