У меня есть приложение, в котором я использую Single activity и различные фрагменты, скажем, при запуске активности. Я вызываю фрагмент A, а затем после ввода входов я переключаюсь на фрагмент B а затем фрагмент C.Как отключить и активировать кнопку переполнения на разных фрагментах
По некоторым причинам я успешно сменил значок переполнения со стилей. Но теперь единственная проблема заключается в том, что по некоторым причинам я хочу показать значки переполнения на фрагменте B, но не на фрагменте A и C. для этого я делаю это
public static void setOverflowButtonColor(final Activity activity, final int i) {
final String overflowDescription = activity.getString(R.string.abc_action_menu_overflow_description);
final ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
final ViewTreeObserver viewTreeObserver = decorView.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
TintImageView overflow = null;
final ArrayList<View> outViews = new ArrayList<View>();
decorView.findViewsWithText(outViews, overflowDescription,
View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
if (outViews.isEmpty()) {
return;
}
overflow = (TintImageView) outViews.get(0);
//overflow.setColorFilter(Color.CYAN);
overflow.setImageResource(R.drawable.my_overflow_image);
if (i == 1 && overflow!=null) {
overflow.setEnabled(false);
overflow.setVisibility(View.GONE);
} else if (overflow != null) {
overflow.setEnabled(true);
overflow.setVisibility(View.VISIBLE);
}
overflow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity, "Overflow", Toast.LENGTH_SHORT).show();
}
});
removeOnGlobalLayoutListener(decorView, this);
}
});
}
public static void removeOnGlobalLayoutListener(View v, ViewTreeObserver.OnGlobalLayoutListener listener) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
v.getViewTreeObserver().removeGlobalOnLayoutListener(listener);
}
else {
v.getViewTreeObserver().removeOnGlobalLayoutListener(listener);
}
}
Так из фрагмента А я посылаю 1 в параметре так, чтобы скрыть значок, но от активности B Посылает 0 в параметре снова видно, но он не получает вызов.
Позвольте мне сказать вам, что эта функция работает, когда она вызывается из фрагмента A, я имею в виду, что она вызывает одно время, но не 2-е время или около того.
скажите, пожалуйста, как это сделать, если вы знаете какой-либо другой лучший метод