2011-12-22 13 views
0

BlackberryMapsのために "MenuItem"を使用して独自のメニュー項目を作成し、Blackberry Mapsを呼び出しました。このアイテムを使用した後、現在の場所(MapView)を自分のアプリケーションに送り返す必要があります。これは正常に動作します。カスタムメニュー項目を使用した後のBlackberryマップを閉じる

問題は、メニュー項目を使用した後にアプリケーションを閉じるための解決策が見つかりませんでした。 Blackberry Mapsを閉じる可能性はありますか?または自分のアプリケーションをフォアグラウンドに設定しますか?

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 Mapsを開いて場所を定義し、gps座標を取得します。ユーザーがブラックベリーマップの場所を選択した場合は、「これを場所として使用する」というmenue Itemを使用する必要があります。現在の地図ビューはアプリに送信され、アプリはマップビューの座標を処理します。しかし、問題はブラックベリーマップがまだ開いていることです:/そして、ユーザーはアプリケーションに戻るためにブラックベリーマップを閉じる必要があります... – 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

関連する問題