我有一个包含三个片段的寻呼机
adapter.addFragment(new PlainColorFragment(Color.red));
adapter.addFragment(new PlainColorFragment(Color.green));
adapter.addFragment(new PlainColorFragment(Color.blue));
我的问题是,是否有可能检测到碎片具有焦点或正在向用户显示。
例如,当绿色片段是屏幕上的片段或具有焦点时,在屏幕上显示“吐司”
我希望我已正确解释了我的问题。
感谢
答案 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布局中的持有者。