How to Know If a Fragment Is Visible

How to know if a Fragment is Visible?

You should be able to do the following:

MyFragmentClass test = (MyFragmentClass) getSupportFragmentManager().findFragmentByTag("testID");
if (test != null && test.isVisible()) {
//DO STUFF
}
else {
//Whatever
}

How to know if any fragment is active or visible?

If you want to change title of toolbar in activity for different fragments than use interface.

Create interface :

public interface OnFragmentTitleChangeListener {
void onFragmentTitle(String strTitle);
}

Implement this interface in your activity

public class YourActivity extends AppCompatActivity implements OnFragmentTitleChangeListener
{
TextView title;
......
......
// Initialize title in onCreate method
......
......
// Override this method
public void onFragmentTitle(String strTitle)
{
title.setText(strTitle);
}

@Override
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();

if (onBack(fm)) {
return;
}
super.onBackPressed();
}

private boolean onBack(FragmentManager fm) {
if (fm != null) {
if (fm.getBackStackEntryCount() > 0) {
fm.popBackStack();
return true;
}
}
return false;
}
}

After that set text from fragment's onResume method.

@Override
public void onResume() {
super.onResume();
((OnFragmentTitleChangeListener) mContext).onFragmentTitle(getResources().getString(R.string.yourtext));
}

How to check if the fragment is visible to user

I finally came across the solution while trying myself:

Simple check for isResumed() and it'd only return true if the fragment is in the foreground and resumed state.

Just to be safe, check for isVisible which also checks for isAdded internally and would reduce the condition, so a simple if-condition:

if (isVisible() && isResumed()) {
// perform your action here
}

This worked for me!

How to determine when Fragment becomes visible in ViewPager

How to determine when Fragment becomes visible in ViewPager

You can do the following by overriding setUserVisibleHint in your Fragment:

public class MyFragment extends Fragment {
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
}
else {
}
}
}

How to know when fragment actually visible in viewpager

Of course. Assuming that viewPager is your instance of the ViewPager, use: viewPager.getCurrentItem().

Within your Fragment you can check if its instance is visible to the user like so:

@Override
public void setUserVisibleHint(boolean visible) {
super.setUserVisibleHint(visible);
if (visible) {
Log.i("Tag", "Reload fragment");
}
}

Always make sure that you search for answers throughly before asking your question. For instance, the first place you should check would be: https://developer.android.com/reference/android/support/v4/view/ViewPager.html

How to check if a Fragment is visible in a ViewPager?

You're passing in 0 as the behavior, which corresponds to the deprecated BEHAVIOR_SET_USER_VISIBLE_HINT. By using that behavior, setUserVisibleHint() will be called with true when your fragment becomes the current page and false when it is not.

If you switch to the not deprecated BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT, then only the current page will get onResume(). When the page changes, that Fragment will get a callback to onPause() and the newly active fragment will get a call to onResume().

How to know which fragment is visible?

If I understood correctly you need to know what fragment is visible when you swipe it.

first option:

viewPager.addOnPageChangeListener(new OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {

}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

public void onPageSelected(int position) {

// Check if this is the page you want by position

if{position==0){
//is FragmentAvaliacao() do something
} else{
//is FragmentReceita() do something
}

}

});

In your case int the onPageSelected(int position) you check if it's 0 meaning "FragmentAvaliacao()" or 1 to FragmentReceita()

Second option

 @Override
public void onResults(Bundle results) {

Fragment page = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.of_your_viewpager + ":" + viewPager.getCurrentItem());

if (ViewPager.getCurrentItem() == 0 && page != null) {
((FragmentAvaliacao)page).showCondutaResults(matches);
}
}


Related Topics



Leave a reply



Submit