Обнаружить фрагмент на экране - PullRequest
1 голос
/ 09 марта 2012

У меня есть пейджер, который содержит три фрагмента

adapter.addFragment (новый PlainColorFragment (Color.red));

adapter.addFragment (новый PlainColorFragment (Color.green));

adapter.addFragment (новый PlainColorFragment (Color.blue));

Мой вопрос заключается в том, можно ли обнаружить, что фрагментация имеет фокус или отображается для пользователя.

Например, когда зеленый фрагмент является фрагментом на экране или имеет фокус, на экране отображается «тост»

Надеюсь, я правильно объяснил свой вопрос.

спасибо

Ответы [ 3 ]

2 голосов
/ 09 марта 2012

Простой:

greenFragment.isVisible();

Если вы ищете какое-то событие, вам придется управлять этим вручную, где бы ни происходило переключение ваших фрагментов, или в вашем классе фрагментов, вы можете выполнить свой кодсобытие фрагмента OnHiddenChanged (конечно, дважды проверяя, что оно в данный момент видно)

0 голосов
/ 30 марта 2014

Вы можете создать Интерфейс, внедрив его в свой Фрагмент, а затем, при родительской активности, вы можете реализовать BackStackChangedListener, как в примере ниже:

    public interface MyFragmentOnScreen {

        public void onActiveFragment();
    }

    public class MyFragment extends Fragment implements MyFragmentOnScreen{
      [...]
        @Override
    public void onActiveFragment() {
//Things you should do when your fragment becomes active
}
    }

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
[...]
        getSupportFragmentManager().addOnBackStackChangedListener(
                new FragmentManager.OnBackStackChangedListener() {
                    public void onBackStackChanged() {
                        // Update your UI here.
                        Log.v(MainActivity.TAG, "Backstack changed");

                            if (getSupportFragmentManager().findFragmentById(R.id.frMain) instanceof MyFragmentOnScreen) {
                                ((MyFragmentOnScreen) getSupportFragmentManager().findFragmentById(R.id.frMain)).onActiveFragment();
                            }
                        }
                    }
                });
}
}

где frMain - держатель в макете MainActivity для вашего фрагмента.

0 голосов
/ 09 марта 2012

Вы можете установить OnPageChangedListener для вашего ViewPager и показывать разные тосты в зависимости от позиции.

...