2011-12-22 5 views
0

Я создал для BlackberryMaps свой собственный пункт меню с помощью «MenuItem» и вызывается Blackberry Maps. После использования этого элемента текущее местоположение (MapView) должно быть отправлено обратно в мое приложение. Это прекрасно работает.Закрыть карту Blackberry после использования пользовательского пункта меню

Проблема: я не нашел решения для закрытия приложения после использования пункта меню. Есть ли возможность закрыть Карты Blackberry? Или настроить собственное приложение на передний план?

private static class MapMenuItem extends ApplicationMenuItem { 
//creates a new MenuItem for Blackberry Maps and defines the action which should //happen after a click on the MenuItem 
      CustomDialog_GPS customDialogGps; 
      StartScreen startScreen; 

      MapMenuItem(StartScreen startScreen, CustomDialog_GPS customDialogGps) { 
       super(20); 
       this.startScreen = startScreen; 
       this.customDialogGps = customDialogGps; 
      } 
      public String toString() { 
      //creates the name for the navigation Menu 
       String itemName = ""+_res.getString(CUSTOMDIALOG_GPS_USE_AS_NEW_LOCATION); 
       return itemName; 
      } 
      public Object run(Object context) { 
      //defines what should happen after a click on the menu 

      //get the location at which the cursor is pointing at. 
       MapView mv = (MapView)context; 

       if (mv != null) {     
        //opens a method inside of CustomDialogGPS which handles the latitude and longitude      
        customDialogGps.saveAdjustedPosition(mv); 

        //TODO pop Screen 
        //Screen screen = (Screen)UiApplication.getUiApplication().getActiveScreen();   
       } 
       else { 
        throw new IllegalStateException("Context is null, expected a MapView instance"); 
       } 
       return null; 
      } 

     } 
+0

Я не уверен, что понимаю ... Не следует ли закрывать карты для возврата в ваше приложение? Почему ваше приложение закрывает карту? – Tamar

+0

Я открываю Карты Blackberry, чтобы определить местоположение и получить координаты gps. Если пользователь выбрал местоположение на картах ежевики, он должен использовать пункт меню, в котором говорится: «Используйте это как местоположение». Текущий вид карты отправляется в приложение, и приложение обрабатывает координаты вида карты. Но проблема в том, что карта ежевики все еще открыта: /, и пользователь должен закрыть карты ежевики, чтобы вернуться к приложению ... – Martin

+0

Зачем вам нужно найти место с карты? почему бы не получить текущее местоположение с помощью LocationProvider? – Tamar

ответ

0

К сожалению, вы не можете закрыть другое приложение программно (На самом деле вы можете, если вы знаете, где находится пункт меню, чтобы закрыть, например), но вы можете на передний план приложение UiApplication.getApplication().requestForeground(). Что, вероятно, подходит для вас.

+0

Thx Eugen. Это решение работает. Теперь у меня есть описанные открытые BB-карты после закрытия приложения, но нормальное закрытие BB-карт во время работы «работает». – Martin

0

Вместо того чтобы передавать пользователя в приложение Карты, находящееся вне вашего приложения, и у вас нет контроля над ним, создайте свой собственный экран с помощью MapField. Используя собственный экран и, возможно, расширяя класс MapField для переопределения функций, если это необходимо, вы можете вернуться к предыдущему экрану после выбора пользователем местоположения.

+0

Thx tamar. Я попробовал это. Если Iam right MapField предоставляет только поле, которое показывает раздел исправления на карте. Следующим шагом было бы реализовать функцию масштабирования и «перемещения», а затем нет таких функций, как «местоположение поиска» (по имени/улице). Это кажется мне слишком много, и я сначала попробую requestForeground(). – Martin