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

按钮。PerformClick()不';如果按钮在Android中不可见,则不会触发Click事件,android,button,onclicklistener,Android,Button,Onclicklistener,我希望我的btnAppShare按钮被单击,即使该按钮不可见,我已经在按钮1单击可见的侦听器之后编写了此代码。基本上,我希望在完全执行按钮1的setOnClickListener事件后,自动单击我的按钮2并执行其`setOnClickListener' btnAppShare = (Button) findViewById(R.id.btnAppShare); btnAppShare.setVisibility(View.INVISIBLE); btnAppShare.perf

我希望我的
btnAppShare
按钮被单击,即使该按钮不可见,我已经在按钮1单击可见的侦听器之后编写了此代码。基本上,我希望在完全执行按钮1的
setOnClickListener
事件后,自动单击我的按钮2并执行其`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();

            }
        }
    });

您不能单击不可见的内容,但可以做的是使按钮背景在其xml中具有此属性时透明

android:background="@android:color/transparent"
此按钮不可见,但可单击

希望它能帮助您使用
View\callOnClick()


performClick()
不同,它直接调用onClickListener方法,而不调用与视图相关的内容。在调用单击操作之前,按钮必须有侦听器

创建一个方法并在设置按钮不可见后调用该方法,然后在侦听器的
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();
    }
}

Button#performClick()
@3mpty的行为是正确的,那么执行setOnClickListener of invisible Button在另一个方法中输入
onClick()
中的所有内容,并从
onClick()
调用该方法,无论您在哪里尝试调用
performClick()
。为这些对象编写外部方法不是更有意义吗?这样,按钮1的onClick方法只调用类似“method1()”的方法,而按钮2的onClick方法调用两个方法“method2()”和“method1()”?只是想指出,您还必须更改文本颜色。这看起来很混乱,因为用户仍然可以单击按钮,而他想要的似乎是一个按钮执行功能X,而另一个按钮则执行功能YX@jace你说得有道理,但我没有说,因为如果他设置的按钮已经不可见,那么这意味着按钮没有文本供用户阅读,用户尚未从按钮中读取任何内容,因此按钮不应包含任何文本
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();
    }
}