Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使按钮单击功能被多次单击?_Java_Android - Fatal编程技术网

Java 如何使按钮单击功能被多次单击?

Java 如何使按钮单击功能被多次单击?,java,android,Java,Android,我正在创建一个包含主题和主题下的段落的应用程序 当用户单击主题时,它将段落设置为可见,再次单击时,它将段落设置为消失。它只能被点击一次,我怎样才能让它发生10次?不写函数10次 我已经尝试添加了rescreate();在b1.setTextColor下,它仅重新创建函数。我还为主题b2、b3、b4等提供了相同的功能。当单击所有主题并将可见性更改为可见时,用户按b1将其关闭,它会将所有其他主题的可见性设置为消失 final LinearLayout lb1 = findViewBy

我正在创建一个包含主题和主题下的段落的应用程序

当用户单击主题时,它将段落设置为可见,再次单击时,它将段落设置为消失。它只能被点击一次,我怎样才能让它发生10次?不写函数10次

我已经尝试添加了rescreate();在b1.setTextColor下,它仅重新创建函数。我还为主题b2、b3、b4等提供了相同的功能。当单击所有主题并将可见性更改为可见时,用户按b1将其关闭,它会将所有其他主题的可见性设置为消失

        final LinearLayout lb1 = findViewById(R.id.b_title1a);
        final TextView b1 = findViewById(R.id.b_title1);
        b1.setTextColor(getResources().getColor(R.color.colorPrimary));
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                lb1.setVisibility(View.VISIBLE);
                b1.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
                b1.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        lb1.setVisibility(View.GONE);
                        b1.setTextColor(getResources().getColor(R.color.colorPrimary));

                    }
                });
            }
        });
是否有方法重复该函数或如何循环该函数? 通过这种方式,用户可以保持活动状态,并尽可能多次打开和关闭主题

     b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                lb1.setVisibility(View.VISIBLE);
                b1.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
                b1.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        lb1.setVisibility(View.GONE);
                        b1.setTextColor(getResources().getColor(R.color.colorPrimary));
                        recreate();

                    }
                });
            }
        });

这是可行的,但代码并不干净,它会带来问题。发生的情况是:第一次单击主题时,您会显示段落,但随后您会覆盖该方法,使其隐藏。但是当你这么做的时候,你就失去了展示它的能力

您不需要在第一次单击后重写OnClick方法。使用if语句查看视图是否可见。如果是,就把它藏起来。如果没有,请展示它

final LinearLayout lb1 = findViewById(R.id.b_title1a);
final TextView b1 = findViewById(R.id.b_title1);
b1.setTextColor(getResources().getColor(R.color.colorPrimary));
b1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (lb1.getVisibility() == View.VISIBLE) {
            lb1.setVisibility(View.GONE);
            b1.setTextColor(getResources().getColor(R.color.colorPrimary));
        } else {
            lb1.setVisibility(View.VISIBLE);
            b1.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
        }
    }
});

全局设置布尔标志

Flag = true;
然后单击按钮,如果标志为true,则表示单击按钮以显示段落,因此编写代码以显示段落,并将标志更改为false

下次单击按钮时,标志将为false,然后您可以执行代码来隐藏段落

b1.setOnClickListener(new View.OnClickListener(){
    public void onClick (View v){
        if (Flag) {
            lb1.setVisibility(View.VISIBLE);
            b1.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
        } else {
            lb1.setVisibility(View.GONE);
            b1.setTextColor(getResources().getColor(R.color.colorPrimary));
        }

    }
}

我现在就去试试,谢谢代码的工作原理与我的基本相同,但它仍然不会使函数重复。我只能单击一次显示,单击一次隐藏。我想我可能误解了你的问题。你想重复是什么意思?是否希望仅单击一次即可多次显示和隐藏该主题?我希望用户能够在浏览活动的同时打开和关闭该主题。请重试,将v.getVisibility()更改为lb1.getVisibility(),因为我已更新了答案。无需为此使用标志。还有其他方法可以检查视图的可见性。这样,如果任何其他内容更改了视图的可见性,则必须记住更改标志,否则代码将无法正常工作。此标志只会在代码中出现。