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