2009-12-03 4 views
1

У меня есть простое приложение Blackberry, которое меняет настройки светодиодов (цвет, мигание, узор). Моя текущая среда тестирования состоит из живого Blackberry Bold (9000), и у меня возникла проблема, и я не уверен, как действовать дальше.Как сбросить конфигурацию светодиодов до исходных настроек

Предположим, что моя текущая настройка Blackberry (светодиодная мудрая) не должна мигать, если нет пропущенного вызова, нового сообщения (всех разновидностей). Программа, которую я написал, изменит светодиод, и это нормально, но проблема заключается в закрытии программы. При закрытии программы появляется диалоговое окно save/discard/cancel. На данный момент это не проблема, так как я только тестирую приложение, проблема в том, что даже если вы отмените сделанные изменения, свет продолжит мигать. Я продемонстрировал программу другу, и он продолжал мигать, я также заметил, что когда я получил новое сообщение, а свет изменился на красный и продолжал мигать (вместо того, чтобы быть зеленым, последний цвет, который я показал в демо).

Как сбросить светодиод до его предыдущего состояния при выходе из программы? Должен ли я копировать существующие настройки (например, мигать или не мигать, когда сеть доступна), а затем при возврате возврата к сохраненным значениям по умолчанию? Или есть лучший способ сброса светодиодов?

Код довольно прост; Вид:

public HomeScreen(boolean error) { 
    redLED = new CustomButtonField("RED", Color.RED, Color.BLACK, Color.BLACK, 
      Color.WHITE, Field.FOCUSABLE); 
    add(redLED); 
    blueLED = new CustomButtonField("BLUE", Color.RED, Color.BLACK, Color.BLACK, 
      Color.WHITE, Field.FOCUSABLE); 
    add(blueLED); 
    whiteLED = new CustomButtonField("WHITE", Color.RED, Color.BLACK, Color.BLACK, 
      Color.WHITE, Field.FOCUSABLE); 
    add(whiteLED); 
    greenLED = new CustomButtonField("GREEN", Color.RED, Color.BLACK, Color.BLACK, 
      Color.WHITE, Field.FOCUSABLE); 
    add(greenLED); 
    redLED.setChangeListener(this); 
    blueLED.setChangeListener(this); 
    whiteLED.setChangeListener(this); 
    greenLED.setChangeListener(this); 
} 

public HomeScreen(long arg0) 
{ 
    super(arg0); 
    // TODO Auto-generated constructor stub 
} 

public void fieldChanged(Field field, int context) 
{   

     LED.setState(LED.LED_TYPE_STATUS, LED.STATE_BLINKING); 

     if(field == redLED) { 
      LED.setColorConfiguration(500,5000,Color.RED); 
     } 
     if(field == blueLED) { 
      LED.setColorConfiguration(500,5000,Color.BLUE); 
     } 
     if(field == whiteLED) { 
      LED.setColorConfiguration(500,5000,Color.WHITE); 
     } 
     if(field == greenLED) { 
      LED.setColorConfiguration(500,5000,Color.GREEN); 
     } 

} 

ответ

2

Чтобы избавиться от диалога сохранения/выбросить/отменить при выходе из экрана, необходимо переопределить метод onSavePrompt() на экране. Вы также можете ввести код, который вы хотите выполнить, когда пользователь покидает экран. Например, вы можете попробовать:

protected boolean onSavePrompt() { 
    LED.setState(LED.STATE_OFF); 
    return true; 
} 
+0

Делать это решает проблему сохранения диалог и не выключить светодиод, но можно ли сбросить светодиод сказать, вспышка, когда приходит или флэш-сообщение, когда я есть охват? Ну, это возможно. –

+1

Если вы хотите, чтобы ваша программа продолжала работать в фоновом режиме после того, как все экраны выскочили из стека, вам нужно вызвать что-то вроде «Application.getApplication(). RequestBackground()» в методе onClose() вашего экран. –

+0

Вы снова откроете программу из меню bb, создайте новый экземпляр приложения или просто принесите приложение на передний план с новым экраном в стеке? –

Смежные вопросы