Таким образом, я в основном реализовал метод на спине нажатой для моего уведомления, где я пытаюсь назначить соответствующее действие, и когда одним нажатием кнопки он возвращает его на вкладки основного действия. Это работает нормально, когда пользователь вошел в систему, но когда человек не вошел в 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();
}
}
}
Пожалуйста, дайте мне знать, если вам нужна какая-то часть кода. Я перепробовал все, от поиска решения в интернете до отладки себя, но не смог найти решение.