Переключайтесь между занятиями без перезапуска или перезагрузки занятия - PullRequest
0 голосов
/ 09 июля 2020

Я использую в своем приложении bottomNavigation. У меня 2 пункта меню (домой, поиск). Я не хочу перезапускать домашнюю активность каждый раз, когда пользователь пытается вернуться к домашней активности из какой-либо другой активности. Я попытался добавить FLAG_ACTIVITY_REORDER_TO_FRONT в свое намерение, но это не сработало.

searchActivity

 bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()){
                case R.id.home:
                    Intent intent = new Intent();
                    startActivity(new Intent(getApplicationContext(),MainActivity.class));
                    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                    overridePendingTransition(0,0);
                    return true;
                case R.id.search:
                    break;
            return false;
        }
    });

1 Ответ

0 голосов
/ 09 июля 2020

Вы можете сделать что-то подобное. С помощью фрагмента active мы просто скрываем активный фрагмент, показываем новый.

MainActivty. java

public class MainActivity extends AppCompatActivity {

final Fragment fragment_home = new HomeFragment();
final Fragment fragment_search = new DashboardFragment();
final FragmentManager fm = getSupportFragmentManager();
Fragment active = fragment_home;

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


    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.nav_view);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

    fm.beginTransaction().add(R.id.nav_host_fragment, fragment_search, "fragment_search").hide(fragment_search).commit();
    fm.beginTransaction().add(R.id.nav_host_fragment, fragment_home, "fragment_home").commit();

}


private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                fm.beginTransaction().hide(active).show(fragment_home).commit();
                active = fragment_home;
                return true;

            case R.id.navigation_dashboard:
                fm.beginTransaction().hide(active).show(fragment_search).commit();
                active = fragment_search;
                return true;
        }
        return false;
    }
};}
...