我需要制作一个包含可点击数字的标签,这样当用户点击标签时,就会调用电话号码(或者向用户显示呼叫选项)。当我点击标签时,我只是得到一个工具提示类型的菜单,可以选择复制数字......
private LabelField contactPhoneNumberField = new LabelField(number,Field.FOCUSABLE)
{
protected boolean navigationClick()
{
// write your code on click
// make the call
PhoneArguments callArgs = new PhoneArguments(
PhoneArguments.ARG_CALL, number);
Invoke.invokeApplication(Invoke.APP_TYPE_PHONE, callArgs);
return true;
}
};
答案 0 :(得分:2)
我认为执行流程没有输入您的navigationClick()
方法,因此您可以获得工具提示而不是想要的功能。
似乎点击事件未到达您的标签实例,之前已被消耗。例如,通过容器类实例(屏幕/管理器)。
检查容器屏幕类/经理实例的naviagationClick()
方法,确保标签实例获得点击事件。
答案 1 :(得分:2)
final LabelField contactPhoneNumberField = new LabelField("",Field.FOCUSABLE) {
public boolean navigationClick (int status , int time){
PhoneArguments callArgs = new PhoneArguments(
PhoneArguments.ARG_CALL, number);
Invoke.invokeApplication(Invoke.APP_TYPE_PHONE, callArgs);
return true;
} };
玩了一会儿之后我发现我需要添加int状态和int时间参数
答案 2 :(得分:2)
一条建议。您不应使用navigationClick()来处理点击。改为覆盖navigationUnclick()方法并处理Unclick。
这符合标准用户界面行为。几乎所有本地字段(如按钮,黑莓上的列表字段)都会在unlick上执行操作而不是单击。即使是窗户上的按钮和链接也遵循相同的概念。
如果您对navigationClick()采取了一些更改焦点的操作 - 例如按下新屏幕,则会在焦点的新字段上调用navigationUnclick。如果该字段是按钮,则会单击该按钮。
如果焦点没有改变,那么navigationUnclick()将返回未处理的状态。这将导致屏幕的navigationUnclickUnhandled()显示“工具提示类菜单”。