2012-09-22 35 views
0

当我按下开关使其显示“开”位置时,我该如何让它实现某些功能,例如,将其链接到将播放器的音量设置为0的方法?我猜它的接口FieldChangeListener如何制作标签当我打开或关闭标签时,做什么?

我所有的实现都发生在MainScreen类中。

Bitmap switch_left = Bitmap.getBitmapResource("switch_left.png"); 
Bitmap switch_right = Bitmap.getBitmapResource("switch_right.png"); 
Bitmap switch_left_focus = Bitmap.getBitmapResource("switch_left_focus.png"); 
Bitmap switch_right_focus = Bitmap.getBitmapResource("switch_right_focus.png"); 

LabeledSwitch silentSwitch = new LabeledSwitch(switch_left, switch_right, switch_left_focus, switch_right_focus, "on", "off", true); 
JustifiedHorizontalFieldManager silent = new JustifiedHorizontalFieldManager(new LabelField("Silent Mode"), silentSwitch, false, USE_ALL_WIDTH); 
silent.setPadding(5,5,5,5); 
add(silent); 

我进口游戏演示称为OpenGlSpriteDemo,看着他们如何implemetned与现场更改侦听启动按钮,所以我想这样做的Labeledswitch。我正朝着正确的方向前进吗?

LabeledSwitch silentSwitch = new LabeledSwitch(switch_left, switch_right, switch_left_focus, switch_right_focus, "on", "off", false); 
silentSwitch.setChangeListener(this); 

public void fieldChanged(Field arg0, int arg1) 
{ 
    //If user sets the switch to on, reduce the volume to 0, 
    // else if user sets the switch to false, change it back 
    // to the default volume  
} 

enter image description here

+2

是的,你正朝着正确的方向前进。但在玩复杂的自定义'Field'对象之前,你是否尝试过一些基本的UI组件,比如'ButtonField'?您需要将FieldChangeListener实例注册到Field以在发生更改事件时得到通知。而你的最后一段代码是不正确的。编写一个将使用'ButtonField'和'FieldChangeListener'的示例应用程序可以帮助您了解更改侦听器的工作原理。 – Rupak

+0

谢谢Rupak。我的应用程序每次断开并连接USB电缆时都会播放一个自定义wav文件,并且我想要实现此开关来打开和关闭该电话。我现在通过使用布尔变量来计算它。 – Dog

+0

您应该只需在背光主题上发布单独的问题。 – Nate

回答

1

想通了使用布尔标志,告诉如果沉默已经或没有,使用get和体积变量的设置方法,并把它传递给:

volume.setLevel(getVolume());  

boolean isSilent = false; 

public void fieldChanged(Field field, int context) 
{ 
    if(!isSilent && field == silentSwitch) 
    { 
     setVolume(0); 
     isSilent = true; 
    } 
    else if(field == silentSwitch && isSilent) 
    { 
     setVolume(20); 
     isSilent = false;   
    } 
} 
+1

这应该可以正常工作,而且'LabeledSwitch'类有一个名为'getOnState()'的方法,它实际上会告诉你它是打开还是关闭。所以,你不应该**需要**用你自己的'isSilent'变量来跟踪它。 – Nate

+0

谢谢,我会试试这个方法。我在哪里可以找到LabledSwitch的所有方法?我无法在这堂课找到任何文件。 – Dog

+1

woops,看起来像所有的方法和它们的描述都在com.samples.toolkit.ui.component java文件中。 :D – Dog