Granit Berisha
Granit Berisha

Reputation: 86

onbackpressed() from Activity to Specific Fragment

I have a MainActivity class with 3 Fragments (each in their own class) My third fragment (LoginFragment) will allow Login a user and then go to a new activity (new Intent) with some info for that user like the product.

If I press back on that Intent will go back to the LoginFragment. I override the @OnBackPressed to start the MainActivity:

Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
this.finish();

I need to know how to replace that Fragment with the LauncherFragment (Fragment 1) in MainActivity.

I have this solution but it takes 0.5 sec to 1-2 sec based on device

Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
this.finish();

would be cool to go direct to Fragment 1 like to finish the third fragment thanks :)

Upvotes: 0

Views: 771

Answers (2)

Granit Berisha
Granit Berisha

Reputation: 86

I fixed the issue in this idea onBackPressed() I call a new Intent but with extras In the MainActivity that has the 3 fragments onRestart() I check if it coming from this class ( has that extras ) than go to this fragment (click,replace,delete)

@Override
    public void onBackPressed() {
        Intent intent = new Intent(this, MainActivity.class);
        intent.putExtra(Constants.Intents.NAVIGATE_BACK, true);
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        this.finish();

}

on the MainActivity I got this

@Override
    protected void onRestart() {
        super.onRestart();
        Intent intent = getIntent();
        boolean navigate = intent.getBooleanExtra(Constants.Intents.NAVIGATE_BACK, false);
        if (navigate) {
            View homeView = bottomNavigationView.findViewById(R.id.home);
            homeView.performClick();
            intent.removeExtra(Constants.Intents.NAVIGATE_BACK);
        }
    }

Upvotes: 1

Jeffrey Blattman
Jeffrey Blattman

Reputation: 22637

If you want it to be as fast as possible, use one activity and fragments to vary the contents. Adding a fragment doesn't create a new window, whereas an activity does.

Also look at your application logic in fragment / activity startup (onCreate(), onResume(), etc). That's going to be the main factor.

Upvotes: 0

Related Questions