Frage

Ich versuche, die ViewSwitcher zu verwenden Schalter zwischen zwei Ansichten auszuführen. Eine davon ist ein Image und der andere ist ein MapView. Ich habe eine Schaltfläche, die der Benutzer diesen Schalter ausführen klickt, aber meine Codes verursachen einen Fehler. Haben Sie Jungs haben keine Ahnung, was ist?

<?xml version="1.0" encoding="utf-8"?>
<linearlayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <relativelayout
        android:id="@+id/RelativeLayout01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <imageview
            android:id="@+id/banner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignparenttop="true"
            android:background="@drawable/banner_location"
            android:clickable="false">
        </imageview>

        <linearlayout
            android:id="@+id/LinearLayout01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/banner"
            android:layout_centerhorizontal="true"
            android:layout_gravity="center_horizontal"
            android:orientation="horizontal"
            android:paddingbottom="5px">

            <imagebutton
                android:id="@+id/btnBusSvcs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginright="5px"
                android:layout_margintop="5px"
                android:background="@drawable/btn_bus_svcs">
            </imagebutton>

            <imagebutton
                android:id="@+id/btnDrvRoute"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginleft="5px"
                android:layout_margintop="5px"
                android:background="@drawable/btn_drv_route">
            </imagebutton>
        </linearlayout>

        <viewswitcher
            android:id="@+id/switcher"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/imgViewBusSvcs"
            android:layout_below="@+id/LinearLayout01">

            <imageview
                android:id="@+id/imgViewBusSvcs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/LinearLayout01"
                android:layout_centerinparent="true"
                android:layout_gravity="center_horizontal"
                android:background="@drawable/bus_svcs"
                android:clickable="false">
            </imageview>

            <com.google.android.maps.mapview
                android:id="@+id/mapview"
                android:layout_width="fill_parent"
                android:layout_height="300px"
                android:apikey="REMOVE MY API KEY"
                android:clickable="true">
            </com.google.android.maps.mapview>
        </viewswitcher>

        <imagebutton
            android:id="@+id/btnBackHome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignparentbottom="true"
            android:layout_centerhorizontal="true"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/btn_back_to_home">
        </imagebutton>
    </relativelayout>
</linearlayout>

Der Fehler ist als solche

11-05 20:53:13.964: ERROR/AndroidRuntime(1417): Uncaught handler: thread main exiting due to uncaught exception
11-05 20:53:13.995: ERROR/AndroidRuntime(1417): java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.widget.RelativeLayout.getRelatedView(RelativeLayout.java:694)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.widget.RelativeLayout.getRelatedViewParams(RelativeLayout.java:708)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.widget.RelativeLayout.applySizeRules(RelativeLayout.java:629)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:279)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.view.View.measure(View.java:7115)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.view.View.measure(View.java:7115)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.view.View.measure(View.java:7115)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.view.View.measure(View.java:7115)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.view.ViewRoot.performTraversals(ViewRoot.java:698)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.os.Looper.loop(Looper.java:123)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at android.app.ActivityThread.main(ActivityThread.java:3948)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at java.lang.reflect.Method.invokeNative(Native Method)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at java.lang.reflect.Method.invoke(Method.java:521)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
11-05 20:53:13.995: ERROR/AndroidRuntime(1417):     at dalvik.system.NativeStart.main(Native Method)

schätzen die Hilfe! :)

War es hilfreich?

Lösung

Sind Sie Layoutparameter zur Laufzeit einstellen oder ist alles in der XML?

Haben Sie versucht, die beiden Ansichten des ViewSwitcher jeder in seine eigene Linearlayout Verpackung?

Andere Tipps

Fügen Sie das ViewSwitcher Widget auf Ihre XML-Layout-Datei. zum ViewSwitcher 2 neue Layouts hinzufügen.

<ViewSwitcher
        android:id="@+id/viewSwitcher1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:inAnimation="@android:anim/slide_in_left" >

        <LinearLayout
        android:id="@+id/view1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/text"
            android:text="This is simplezdscsdc text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            </TextView>

        </LinearLayout>


    <LinearLayout
        android:id="@+id/view2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/text"
            android:text="This issdsdsds simplezdscsdc text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            </TextView>

        </LinearLayout>
    </ViewSwitcher>

In Ihrer Tätigkeit, Add-Funktion auf einen Knopf, den Schalter zwischen den Ansichten

viewSwitcher =   (ViewSwitcher)findViewById(R.id.viewSwitcher1);
        myFirstView= findViewById(R.id.view1);
        mySecondView = findViewById(R.id.view2);
        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if (viewSwitcher.getCurrentView() != myFirstView){

                    viewSwitcher.showPrevious(); 
                } else if (viewSwitcher.getCurrentView() != mySecondView){

                    viewSwitcher.showNext();
                }
            }
        });

Android: inanimation = "@ android: Anim / slide_in_left" ermöglicht die Ansicht zu blättern in von links

Sie müssen sonst ein Linearlayout Verpackung, alles haben. Am Beispiel sehe ich mehr als eine, aber kein Haupt ein.

Ihr Image Tag unter ViewSwitcher Tag fallen sollte, genau wie die com.google.android.maps.MapView.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top