繁体   English   中英

片段中的 OnClick - 仅触发一次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM