1

私は明らかにアプリ開発に不慣れですが、基本的に私がやりたいのは、「マップの表示」と呼ばれるボタンがあり、押すとGoogleマップを開くシンプルなアプリを作成することです。

これまでのところ、[マップの表示]ボタンを使用してアプリをコーディングしました。このボタンを押すと、ボタンの下にテキストが返されます。これは次のようになります。

ここに画像の説明を入力してください

また、Google Developersのチュートリアルを使用して、アプリを開いたときにGoogleマップを表示する別のアプリを作成しました。

2つのアプリを組み合わせようとすると、問題が発生します。開いたときにボタンだけを表示するのではなく、ボタンと地図の両方をホーム画面に次のように表示します。

ここに画像の説明を入力してください

ボタンが押されても何もしません。

私がやろうとしたのは、ボタンが押されたときにマップをロードするOnClickListenerを使用することですが、それは明らかに機能していません。私はそれが私のactivity_mainクラスと本当に基本的な関係があると思いますが、アプリがロードされたときにマップがすぐに作成されないようにそれを整理するのに助けが必要です。

私のactivity_mainクラスは次のようになります。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<com.google.android.maps.MapView
    android:id="@+id/mapView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:apiKey="**My Key**"
    android:clickable="true"
    android:enabled="true" />

<Button
    android:id="@+id/buttonMap"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="View Map" />
</RelativeLayout>

そして、私のMainActivityクラスは次のようになります。

public class MainActivity extends MapActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button buttonMap = (Button) findViewById(R.id.buttonMap);
        buttonMap.setOnClickListener(mapListener);
    }

    private OnClickListener mapListener = new OnClickListener() {
        public void onClick(View v) {
            MapView mapView = (MapView) findViewById(R.id.mapView);
            mapView.setBuiltInZoomControls(true);
        }
   };

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}

どんな助けでもありがたいです、乾杯。

4

1 に答える 1

0

わかりました。ボタンにMainActivityを使用してから、ボタンのOnClickListenerを設定して、MapActivityを拡張する別のアクティビティをトリガーする必要があると思います。MainActivityは、Activityのみを拡張します。「mapListener」の構成は次のとおりです。

Intent i = new Intent(ctx, MyMapView.class);
// i.putExtra("key", "value"); // use this to give extra data to the new Activity
startActivity(i);

MainActivityでctxをインスタンス変数(つまり、関数の外部)として定義し、「this」に設定します。

Context ctx = this;

mapListener内から、「this」はActivityではなくOnClickListenerオブジェクト自体であるため、「new Intent()」で「this」を使用するとエラーが発生します。ただし、mapListenerはアクティビティ内に存在するため、「ctx」は問題なく表示され、その意味は変わりません。

「mapListener.onClick」内のすべては、新しいMap ActivityのonCreate()メソッドに入る必要があります。

于 2012-10-22T16:12:56.070 に答える