检测屏幕中的片段

时间:2012-03-08 21:44:30

标签: android fragment

我有一个包含三个片段的寻呼机

adapter.addFragment(new PlainColorFragment(Color.red));

adapter.addFragment(new PlainColorFragment(Color.green));

adapter.addFragment(new PlainColorFragment(Color.blue));

我的问题是,是否有可能检测到碎片具有焦点或正在向用户显示。

例如,当绿色片段是屏幕上的片段或具有焦点时,在屏幕上显示“吐司”

我希望我已正确解释了我的问题。

感谢

3 个答案:

答案 0 :(得分:2)

简单:

greenFragment.isVisible();

如果您正在寻找某种事件,则必须在片段切换发生的任何地方手动管理,或者在片段类中,您可以在片段的OnHiddenChanged事件中执行代码(双重检查当然,它目前是可见的)

答案 1 :(得分:0)

您可以为ViewPager设置OnPageChangedListener,并根据位置显示不同的吐司。

答案 2 :(得分:0)

您可以创建一个接口,在Fragment中实现它,然后在父活动中,您可以实现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是Fragment的MainActivity布局中的持有者。