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

时间:2016-04-28 06:13:52

标签: android button onclicklistener

即使按钮不可见,我也希望点击btnAppShare按钮,我在按钮1单击可见的监听器后编写了此代码。基本上,我希望在完成按钮1的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();

            }
        }
    });

4 个答案:

答案 0 :(得分:6)

使用View#callOnClick()

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

performClick()不同,它直接调用onClickListener方法,没有与视图相关的东西。在调用点击操作之前,按钮必须有监听器!

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您无法点击不可见的内容但您可以执行的操作是使该按钮背景在其xml中使用此属性透明

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

这种方式按钮不可见但可点击。

希望有所帮助

答案 3 :(得分:-1)

如果你愿意

view.performClick()

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