2016-09-12 2 views
1

要素の選択を使用して画面の1つを構成するAndroidアプリケーションを構築しています。各要素はScreenElementクラスの子で、LinearLayoutにも拡張されています。GoogleマップをLinearLayoutの子として追加

私のアクティビティはデータベースにクエリを出し、要素の数とその性質を決定し、各要素をアクティビティのレイアウトに追加します。要素は、通常のJavaクラスですが、彼らは、彼らの親を通じて、LinearLayoutを拡張するように、私はちょうどそのような画像やテキストなどあらゆる種類のものを含めることができ

LinearLayout layout = (LinearLayout) findViewById(R.id.screenLayout); 
for(ScreenElement e : screenElements) { 
    layout.addView(e); 
} 

要素をやってそれらを追加することができます。今、マップを表示できる要素が必要です。問題は:Fragmentにマップを表示することをお勧めします(保持クラスはActivityまたはFragmentではなくViewであるため)。MapViewもありますが、すべての例が見つかりました。 ActivitythisまたはthisMapViewがオーバーライドされた機能(、onDestroy、に接続するために必要とされているので、ActivityMapViewを使用して...)。

それでは、私は基本的に見つけることを望んでいることは、これを行うものです(動作していないコード):

public class MapElement extends ScreenElement { 
    private MapView mapView; 
    private GoogleMap gMap; 

    public MapElement(Context con) { 
     super(con); 

     mapView = new MapView(con); 
     gmap = new GoogleMap(); 

     // Set map options and features, size etc. 

     mapView.setMap(gMap); 
     this.addView(mapView); 
    } 
} 

これは動作しません。私はあなたが私に与えることができるすべてのヒントに感謝します!

+0

リンクチュートリアルに従うことができます。 https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/src/main/java/com/example/mapdemo/ProgrammaticDemoActivity.java – Dportology

+0

はい、私はそれを試みましたが、問題は 'getSupportFragmentManager () 'は、' Activity'が 'FragmentActivitiy'を拡張する場合にのみ呼び出すことができます。私は非アクティビティクラスで働いているので、そうではありません。あなたの例では、 'MapFragment'はプログラムでは作成できないので、ここで' MapFragment'を使うことはできません。 – s4inz

答えて

1

あなたは作業コードではありません。渡されたコンテキストを「タイプ」アクティビティにキャストすると、fragmentManager関数にアクセスできるはずです。

((MainActivity)con).getSupportFragmentManager().... 

、その後、あなたはあなたに有用であり得るその「プログラムによるマップの追加」以前にこのGoogleマップのAPIのデモは、セクションを持っている

+0

ありがとうございます。それはかなり簡単でした。 'supportManager'がコンテキストから呼び出せることを知りませんでした。 – s4inz

関連する問題