I have posted this question previously但答案不合适。提供的解决方案只是在自定义按钮具有焦点和非焦点时更改图片。假设在我的应用程序中,如果用户点击customButton,我需要更改图片,nim通过调用相同的屏幕来执行此操作(即 UiApplication.getUiApplication()。pushScreen(new Screen2(b)); )。 Screen2是保存customButton的屏幕。点击evevt我通过传递aint变量 pic_status 来推动同一个屏幕,该变量确定在新屏幕中在CustomButton中绘制哪张图片。有没有办法在点击事件中更新CustomButtonField中的图片,而无需反复推送同一个屏幕。
//code in Screen2
public void fieldChanged(Field field, int context)
{
if(field == bf1)
{
if(pic_status == 0)
{
pic_status=1;
}
UiApplication.getUiApplication().pushScreen(new Screen2(pic_status));
}
//code in CustomButtonField
CustomButtonField(String label,int pic_status,long style)
{
super(style);
this.label = label;
this.labelHeight = getFont().getHeight();
this.labelWidth = getFont().getAdvance(label);
this.notice = s;
if(pic_status ==0)
{
currentPicture1 = onPicture;
currentPicture2 = onPicture;
}
if(pic_status ==1)
{
currentPicture1 = clickPicture;
currentPicture2 = onPicture;
}
if( pic_status==2 )
{
currentPicture1 = onPicture;
currentPicture2 = clickPicture;
}
}
我需要一种方法来更新buttonClick事件上的customButtonField文本和图片,而不是聚焦/非聚焦事件,而不会再次按下同一个屏幕。如果我上面对问题的描述不满意,请添加注释我可以给出更详细的解释我的问题吗?
答案 0 :(得分:0)
我们可以覆盖CustomButtonField的一些方法,例如protected boolean keyChar (...),protected boolean navigationClick (...),protected boolean trackwheelClick (...),受保护的布尔 touchEvent (...)等,并在点击或选择事件发生时使用它们来更改按钮图像。
例如,在受保护的布尔 touchEvent (...)上,我们可以执行以下任务..