2010-11-05 17 views
7

İki görünüm arasında geçiş yapmak için ViewSwitcher'ı kullanmaya çalışıyorum. Biri bir ImageView ve diğeri bir MapView. Kullanıcının bu anahtarı gerçekleştirmek için tıkladığı bir düğme var ancak kodlarım hataya neden oluyor. Ne hakkında bir fikrin var mı? Android ViewSwitcher nasıl kullanılır?

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) 

böyle Gerçekten yardıma takdir olarak

<?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> 

hatadır! :)

cevap

1

Çalışma zamanında Layout parametrelerini mi ayarlıyorsunuz veya XML'deki her şey var mı?

ViewSwitcher'in iki görünümünü her birinin kendi LinearLayout içine sarmayı denediniz mi?

+0

Merhaba, teşekkürler. XML kodlarını yeniden yayınladım. – fgs

+0

lol, bunu unuttum. Teşekkürler! – fgs

+0

ViewSwitcher'in iki görünümünü her birinin kendi LinearLayout içine sarmayı denediniz mi? –

1

Diğer her şeyi sarmalayan bir LinearLayout uygulamasına sahip olmanız gerekir. Örnekte birden fazla ama hiç ana göremiyorum.

0

ImageView etiketiniz, tıpkı com.google.android.maps.MapView gibi ViewSwitcher etiketinin altına düşmelidir.

18

ViewSwitcher küçük aracını xml düzen dosyanıza ekleyin. ViewSwitcher'a , 2 yeni düzen ekleyin. etkinlik olarak

<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> 

, görünümler arasında geçiş bir düğmeye işlev eklemek

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: sıkıcılık = "@ android: anim/slide_in_left" görünümü

soldan içinde ilerlemek için olanak sağlar
İlgili konular