I have implemented navigation drawer in my app. When I open the app first it shows blank screen. Instead I want it to start fragmentA.
I have tried
Intent i = new Intent(MainActivity.this, fragmentA.class);
startActivity(i);
but this gives me activity not found exception.
So how can I start a fragment inside an activity?
Try:
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.yourFrame, fragmentA.getInstance());
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragmentTransaction.commit();
in your activity
Related
How to open a Fragment from another Fragment?
I basically have a button inside of my HomeFragment.kt and I want to make it to redirect me to AboutFragment but I'm not sure how to make it. I tried different methods from Stack but nothing worked... Any suggestions? I wanna open the new fragment as I will open from navigation drawer.
Here is the button but my code just work with activities... Not with fragments...
binding.aboutUsBtn.setOnClickListener {
val intent = Intent(activity, AboutFragment::class.java)
startActivity(intent)
}
Try this code plz:
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.home_layout, new ChatFragment(), "second fragment"); //My second Fragment
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
So I have Activity A with Fragment A.1, and I also have Activity B with Fragment B.1.
What I want to ask is, how do I move directly from Fragment A.1 to Fragment B.1?
I know to move from Fragment A.1 to Activity B, is by:
Intent i = new Intent (getActivity (), MainActivity.class);
startActivity (i);
getActivity ().finish();
But how to move straight to Fragment B.1?
Each Activity A and Activity B has a different <FrameLayout> for Fragment replacement
UPDATE 1.0
I've tried my own way and also the way #cewaphi answered with code like this,
In Activity A:
Intent i = new Intent(TransactionDone.this, MainActivity.class);
i.putExtra("immediatelyTransactionToFragment", true);
startActivity(i);
finishAffinity();
In Activity B:
boolean shouldTransitionToFragment = getIntent().getBooleanExtra("immediatelyTransationToFragment", true);
if (shouldTransitionToFragment) {
Fragment fragment = new Wallet();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.mainFrameLayout, fragment);
transaction.commit();
Log.d("DEBUGGING REDIRECT", "Go to Fragment B.1");
}
The log "Go to Fragment B.1" was created but the transaction doesn't work
When using a single activity and e.g. using the navigation component is not an option.
Consider the following:
In your fragment A.1 when starting the activity store a Boolean
i.putExtra("immediatelyTransationToFragment", true);
In activity B
shouldTransitionToFragment = getIntent().getBooleanExtra("immediatelyTransationToFragment");
// after activity was created
if (shouldTransitionToFragment) {
// Execute the transition action as you would when pressing the button
}
Update 2020/09/07
You are trying to transition to a Fragment from your Activity like this:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.mainFrameLayout, fragment);
transaction.commit();
The documentation states that you should first add the fragment to the activity:
ExampleFragment fragment = new ExampleFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
Apparently your transition works when you click your button. Are you doing it the same?
But I assume at that time the activity has already been created.
Try once to add your fragment instead of replace. I don't know how your container is initialised but adding might be the operation you want, I refer to this good answer for clarification.
Also consider to perform to call this transaction after your activity was created.
How to transfer control from one activity to fragment of another activity in android studio. For example I have activity A and B. Activity B had 2 fragments f1,f2. How to transfer control from A to f2?
pass some intent flag from first activity to second activity and in second activity use of getIntent() check the type of flag with the help of that flag open desired fragment.
Just add this code in your Activity B in onCreate()
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new f2());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Now,simply use explicit intent to go to Activity B from Activity A,
Intent intent=new Intent(ActivityA.this,ActivityB.class);
startActivity(intent);
I already create my application with Navigation Drawer. I want to start my second activity and keep the navigation drawer.
When, i opened my second activity using this code:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
The Navigation Drawer disapper.
So, how can i do this?
Try these code :-
we need to call fragment that's why we will use these code
FragmentTransaction ftHome =
getActivity().getSupportFragmentManager().beginTransaction();
Fragment fmHome = new HomeFragment();
ftHome.replace(R.id.container_body, fmHome);
ftHome.commit();
I have a button in Fragment. When Button is clicked it has to Open new Fragment/Activity within Fragment. I have written code using Intent,
Intent i = new Intent();
i.setClass(getActivity(), UpdateProfile.class);
startActivity(i);
but its opening in new activity like in below image.
My requirement is in Picture 1. Can someone suggest me how to do it?
EDIT: As suggested by rai and ADK, its working fine but new fragment overlays on old fragment. See the below image. "Change Password"(TextView) is New Fragment which overlays on existing fragment.
Try:
getFragmentManager()
.beginTransaction()
.replace(containerViewId, newFragment)
.addToBackStack(null) // enables back key
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) // if you need transition
.commit();
You should to use FragmentTransaction enter link description here.
Like this
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.yourFragment, YourFragmentWithImageClass.getInstance());
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragmentTransaction.commit();
in your Activity