[英]OnClick in Fragment - Only Firing Once
我的应用程序有一个带有三个片段的选项卡式屏幕,其中两个片段相同但数据不同。
单击底部的评论会显示完整的评论列表,然后单击 [x] 关闭评论。 这是通过动画和.setVisibility() 完成的。
问题是我只能这样做一次,因为在关闭评论后单击它什么都不做。
此处显示了提出评论-从调试开始,如果我不弄乱可见性,onClick 就会触发,因此它们一定会在某处引起问题
comment_overview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleCommentOverviewClick(v);
}
});
...
private void handleCommentOverviewClick(View v) {
Log.d("OPEN", "open");
scrollView.fullScroll(ScrollView.FOCUS_UP);
Animation bottomUp = AnimationUtils.loadAnimation(getContext(),
R.anim.slide_in_bottom);
bottomUp.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
bottom_info_section.setVisibility(View.GONE);
// animation.cancel();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
comment_section.startAnimation(bottomUp);
comment_section.setVisibility(View.VISIBLE);
}
关闭评论是类似的,如下所示
private void handleCommentsClose(View v) {
Log.d("CLOSE", "cls");
Animation topDown = AnimationUtils.loadAnimation(getContext(),
R.anim.slide_out_bottom);
topDown.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
comment_section.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) {}
});
comment_section.startAnimation(topDown);
bottom_info_section.setVisibility(View.VISIBLE);
}
我已经尝试遵循使片段实现 OnClickListener 并在开关中处理每个可点击的建议,但我得到了相同的行为 - 它会工作一次但不会再次工作,除非我导航离开并返回。
会喜欢任何建议,因为我有点卡住了
可能局部变量bottomUp,topDown会在handleComment结束时被删除。 然后 onAnimationEnd 不会回调并且视图不会消失。 尝试在外面声明。
Animation topDown;
topDown = AnimationUtils.loadAnimation(getContext(),
R.anim.slide_out_bottom);
很确定我制作动画的方式把它搞砸了。 切换到此处使用的过渡动画很有帮助。
private void handleCommentOverviewClick(ViewGroup v) {
Log.d("OPEN", "open");
scrollView.fullScroll(ScrollView.FOCUS_UP);
Transition transition = new Slide(Gravity.BOTTOM);
transition.setDuration(200);
transition.addTarget(comment_section);
TransitionManager.beginDelayedTransition(v, transition);
comment_section.setVisibility(View.VISIBLE);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.