0

scrollView内でMapViewを使用したかった。これを行うと、マップのスクロールの問題が発生し、マップをスクロールする場合、ページ全体がスクロールされます。私はここでこの問題の解決策を見つけました:ScrollView内のMapView?
myMapViewという名前のクラスを作成しました。これがコードです:

package com.wikitude.example;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;

import com.google.android.maps.MapView;

public class myMapView extends MapView {

    public myMapView(Context context, String apiKey) {
        super(context, apiKey);
        // TODO Auto-generated constructor stub
    }

    public myMapView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    public myMapView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        int action = ev.getAction();
        switch (action) {
        case MotionEvent.ACTION_DOWN:
            // Disallow ScrollView to intercept touch events.
            this.getParent().requestDisallowInterceptTouchEvent(true);
            break;

        case MotionEvent.ACTION_UP:
            // Allow ScrollView to intercept touch events.
            this.getParent().requestDisallowInterceptTouchEvent(false);
            break;
        }

        // Handle MapView's touch events.
        super.onTouchEvent(ev);
        return false;
    }
}

しかし、MapActivityで次のように使用しようとすると:

myMapView myview = (myMapView) findViewById(R.id.themap);

このエラーがスローされます:
Undable to start activity ComponentInfo{com.smtabatabaie.example/com.smtabatabaie.mainActivity}: java.lang.ClassCastException: com.google.android.maps.MapView
問題がどこにあるのかわかりませんでした。すべて問題ないようです。
誰かがこのおかげで私を助けることができれば私は感謝されます

4

1 に答える 1

3

そのClassCastExceptionが発生する理由は次のとおりです。カスタムマップビューを宣言するXMLファイルでは、実際にカスタムマップビューの名前を宣言する必要があるため、この場合はmyMapViewになります。XMLファイルは次のようになります。

<com.wikitude.example.myMapView   //This is where you're probably going wrong (so what I've posted is the right way to declare it)
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent" //Replace these with whatever width and height you need
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="Enter-your-key-here"
/>
于 2012-10-07T07:56:57.910 に答える