繁体   English   中英

如果按钮在 Android 中不可见,则 Button.PerformClick() 不会触发 Click 事件

[英]Button.PerformClick() doesn't fire Click event if the button is not visible in Android

即使按钮不可见,我也希望单击我的btnAppShare按钮,我在可见的按钮 1 单击侦听器之后编写了此代码。 基本上,我希望在完全执行 button1 的setOnClickListener事件后,我的 button2 会被自动点击并执行它的 `setOnClickListener。

 btnAppShare = (Button) findViewById(R.id.btnAppShare);
    btnAppShare.setVisibility(View.INVISIBLE);
    btnAppShare.performClick();
    btnAppShare.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {

            if (TextUtils.isEmpty(regId)) {
                Toast.makeText(getApplicationContext(), "RegId is empty!",
                        Toast.LENGTH_LONG).show();
            } else {
                Intent i = new Intent(getApplicationContext(),
                        MainActivity.class);
                i.putExtra("regId", regId);

                startActivity(i);
                finish();

            }
        }
    });

使用View#callOnClick()

Button b = (Button)findViewById(R.id.button);
//set here listener
b.callOnClick();

performClick()不同,它直接调用performClick()方法,而没有视图相关的内容。 在调用点击动作之前,按钮必须具有侦听器!

创建一个方法,并在将按钮设置为不可见后调用该方法,然后在侦听器的onClick方法内部调用该方法。

btnAppShare = (Button) findViewById(R.id.btnAppShare);
btnAppShare.setVisibility(View.INVISIBLE);
myMethod();
btnAppShare.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) 
        myMethod();
    }
});

public void myMethod()
{
    if (TextUtils.isEmpty(regId)) {
        Toast.makeText(getApplicationContext(), "RegId is empty!",
                Toast.LENGTH_LONG).show();
    } else {
        Intent i = new Intent(getApplicationContext(),
                MainActivity.class);
        i.putExtra("regId", regId);

        startActivity(i);
        finish();
    }
}

您不能单击不可见的内容,但是可以使用该属性在其xml中使该按钮背景透明

android:background="@android:color/transparent"

这样,按钮将不可见,但可以单击。

希望能帮助到你

如果你想

view.performClick()

类似的东西,你应该在 performclick 方法上面写你的 setOnclick 方法。 因为代码从上往下流动,按钮在调用之前应该生成 setOnclick 方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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