当用户按下返回时需要每个片段 return 到主屏幕(应用程序中没有任何按钮)

Need Each fragment to return to home screen when user presess back(without any button in app)

所以,我正在创建这个包含不同片段的基本应用程序,我希望当用户按下 phone 上的后退按钮时,应用程序 returns 到主片段。

主要Activity

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

    public void book(View view)
    {
        Toast.makeText(this, "You tried to book", Toast.LENGTH_SHORT).show();
    }
    public void submit(View view)

    {
        EditText editText = (EditText) findViewById(R.id.feedbackText);
        if (editText.getText().toString().isEmpty())
        {
            Toast.makeText(this, "Please type something first", Toast.LENGTH_SHORT).show();
        }
        else
        {
            editText.setText("");

            Toast.makeText(this, "Thank You for your feedback", Toast.LENGTH_SHORT).show();

            closeKeyboard();
        }
    }

    private void closeKeyboard()
    {
        View view = this.getCurrentFocus();
        if (view != null)
        {
            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(view.getWindowToken(),0);
        }
    }


    DrawerLayout drawerLayout;
    ActionBarDrawerToggle actionBarDrawerToggle;
    Toolbar toolbar, searchToolbar;
    NavigationView navigationView;
    FragmentManager fragmentManager;
    FragmentTransaction fragmentTransaction;
    Menu search_menu;
    MenuItem item_search;
    Button submitBtn;
    MaterialSearchView searchView;
    EditText email;
    EditText password;
    TextView titleText;
    int counter = 0;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.search, menu);
        MenuItem item  = menu.findItem(R.id.action_search);
        searchView.setMenuItem(item);
        return true;
    }

    public void guest(View view)
    {
        fragmentManager = getSupportFragmentManager();
        fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.container, new Home());
        fragmentTransaction.commit();
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = findViewById(R.id.toolbar);
        submitBtn = findViewById(R.id.submitBtn);
        titleText = findViewById(R.id.toolbarTitle);

        searchToolbar = (Toolbar)findViewById(R.id.search_toolbar);
        setSupportActionBar(toolbar);

        toolbar.setTitleTextColor(Color.parseColor("#FFFFFF"));
        searchView=(MaterialSearchView)findViewById(R.id.search_view);

        drawerLayout = findViewById(R.id.drawer);
        navigationView = findViewById(R.id.navigationView);
        navigationView.setNavigationItemSelectedListener(this);
        actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.Open, R.string.Close);
        drawerLayout.addDrawerListener(actionBarDrawerToggle);
        actionBarDrawerToggle.setDrawerIndicatorEnabled(true);
        actionBarDrawerToggle.syncState();

        fragmentManager = getSupportFragmentManager();
        fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.container, new Home());
        fragmentTransaction.commit();
        titleText.setText(R.string.home);


    }


    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        drawerLayout.closeDrawer(GravityCompat.START);
        if (item.getItemId() == R.id.home)
        {
            fragmentManager = getSupportFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, new Home());
            fragmentTransaction.commit();
            titleText.setText(R.string.home);

        }
        if (item.getItemId() == R.id.myOrders)
        {
            fragmentManager = getSupportFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, new MyOrders());
            fragmentTransaction.commit();
            titleText.setText(R.string.myOrders);

        }
        if (item.getItemId() == R.id.refer)
        {
            fragmentManager = getSupportFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, new Refer());
            fragmentTransaction.commit();
            titleText.setText(R.string.refer);

        }
        if (item.getItemId() == R.id.contact)
        {
            fragmentManager = getSupportFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, new Contact());
            fragmentTransaction.commit();
            titleText.setText(R.string.contact);


        }
        if (item.getItemId() == R.id.feedback)
        {
            fragmentManager = getSupportFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, new Feedback());
            fragmentTransaction.commit();
            titleText.setText(R.string.feedback);


        }
        if (item.getItemId() == R.id.settings)
        {
            fragmentManager = getSupportFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, new Settings());
            fragmentTransaction.commit();
            titleText.setText(R.string.setting);


        }
        if (item.getItemId() == R.id.terms)
        {
            fragmentManager = getSupportFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, new Terms());
            fragmentTransaction.commit();
            titleText.setText(R.string.terms);


        }

        return true;
    }
        
}

请帮我解决这个问题。

在你的 Activity 中使用 onBackPress 试试这个

    @Override
    public void onBackPressed() {
        if (!(getSupportFragmentManager().findFragmentById(R.id.container) instanceof Home)) {
            fragmentManager = getSupportFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, new Home());
            fragmentTransaction.commit();
            titleText.setText(R.string.home);
        } else {
            super.onBackPressed();
        }
    }