trong trường hợp của tôi, tôi muốn bắt đầu một số hoạt ảnh trong các chế độ xem, nhưng với setUserVbrokenHint có một số vấn đề ...
giải pháp của tôi là:
1 / addOnPageChangeListener cho bộ điều hợp của bạn:
mViewPager.addOnPageChangeListener(this);
2 / triển khai OnPageChangeListener:
public class PagesFragment extends Fragment implements ViewPager.OnPageChangeListener
3 / ghi đè 3 phương thức:
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
}
@Override
public void onPageSelected(int position)
{
}
@Override
public void onPageScrollStateChanged(int state)
{
}
4 / khai báo và khởi tạo biến này trên lớp của bạn
private static int mTabState = 1;
lưu ý : tôi có ba đoạn trong bộ điều hợp của mình và sử dụng mTabState cho setCurrentItem và vị trí hiện tại của bộ điều hợp nhận ra đoạn nào được hiển thị cho người dùng kịp thời ... 5 / trong phương pháp onPageSelected, hãy thêm mã này:
if (mTabState == 0 || position == 0)
{
Intent intent = new Intent("animation");
intent.putExtra("current_position", position);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
}
nếu trang trước hoặc trang hiện tại là trang 0 (phân đoạn ở vị trí 0) thì hãy thực hiện công cụ này
6 / bây giờ trong lớp phân mảnh của bạn (phân mảnh ở vị trí 0 của bộ điều hợp), bạn phải tạo bộ thu phát sóng và đăng ký nó trong phương thức onResume và hủy đăng ký nó trên Pause methos:
BroadcastReceiver broadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
if (Objects.equals(intent.getAction(), "animation"))
{
int currentPosition = intent.getIntExtra("current_position", 0);
if (currentPosition == 0)
{
startAnimation();
setViewsVisible();
} else
{
setViewsInvisible();
}
}
}
};
@Override
public void onResume()
{
super.onResume();
LocalBroadcastManager.getInstance(mContext).registerReceiver(broadcastReceiver, new IntentFilter("animation"));
}
@Override
public void onPause()
{
super.onPause();
LocalBroadcastManager.getInstance(mContext).unregisterReceiver(broadcastReceiver);
}
tóm tắt: tôi có phù thủy Fragment Pager Adapter hiển thị Ba Fragment trong đó, tôi muốn hiển thị một số Animations trên Views trong Fragment ở Vị trí 0 của Adapter, Đối với điều này, tôi sử dụng BroadcastReceiver. Khi Fragment được chọn, tôi bắt đầu phương thức Animation và hiển thị các View cho Người dùng, Khi Fragment không hiển thị cho người dùng, tôi cố gắng Invisible Views ...