2013-07-25 20 views
1

將Button放置在View中創建的分隔線上方時出現問題。在下面的代碼,我把按鈕和文本,你可以在圖片中看到:將Button放置在視圖上方時發生ClassCastException

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

    <LinearLayout 
     android:id="@+id/image_card_wrapper" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

     <ImageView 
      android:id="@+id/image_card" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="16dp" 
      android:baselineAlignBottom="false" 
      android:contentDescription="@string/image_card" 
      android:src="@drawable/image10herz" /> 
    </LinearLayout> 

    <View 
     android:id="@+id/separator_card" 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:layout_below="@+id/image_card_wrapper" 
     android:layout_marginBottom="16dp" 
     android:layout_marginTop="16dp" 
     android:background="@android:color/darker_gray" /> 

    <TextView 
     android:id="@+id/text_card_info" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/separator_card" 
     android:layout_marginRight="16dp" 
     android:text="test1" 
     android:textSize="14sp" 
     android:textStyle="bold" /> 

    <View 
     android:id="@+id/separator_card_info" 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:layout_below="@+id/text_card_info" 
     android:layout_marginBottom="16dp" 
     android:layout_marginTop="16dp" 
     android:background="@android:color/darker_gray" /> 

    <Button 
     android:id="@+id/button_next_card" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/separator_card_info" 
     android:text="@string/button_next_card" 
     android:textSize="12sp" /> 

    <Button 
     android:id="@+id/button_klo_card" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/separator_card_info" 
     android:layout_toLeftOf="@+id/button_next_card" 
     android:text="@string/button_klo_card" 
     android:textSize="12sp" 
     android:visibility="visible" /> 

    <Button 
     android:id="@+id/button_king" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/separator_card_info" 
     android:layout_toLeftOf="@+id/button_klo_card" 
     android:text="@string/button_king" 
     android:textSize="12sp" 
     android:visibility="visible" /> 

    <ToggleButton 
     android:id="@+id/button_music" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/separator_copyright_play" 
     android:textOff="@string/button_music_off" 
     android:textOn="@string/button_music_on" 
     android:textSize="12sp" 
     android:visibility="visible" /> 

    <View 
     android:id="@+id/separator_copyright_play" 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:layout_above="@+id/text_copyright_play" 
     android:layout_marginBottom="16dp" 
     android:layout_marginTop="16dp" 
     android:background="@android:color/darker_gray" /> 

    <TextView 
     android:id="@+id/text_copyright_play" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="16dp" 
     android:layout_alignParentBottom="true" 
     android:text="@string/text_copyright" /> 

</RelativeLayout> 

下面是佈局圖:

enter image description here

正如你所看到的,我要顯示所有水平線上方的按鈕以及與android:layout_toLeftOf="..."一行中的所有按鈕。每次我做android:layout_above="@+id/horizontal_line_bottom"和活動推出時,我得到以下ClassCastException

05-28 16:48:12.624: E/AndroidRuntime(4260): FATAL EXCEPTION: main 
05-28 16:48:12.624: E/AndroidRuntime(4260): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mho.circleofdeathapp/com.mho.circleofdeathapp.PlayActivity}: java.lang.ClassCastException: android.view.View cannot be cast to android.widget.ToggleButton 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at android.os.Looper.loop(Looper.java:137) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at dalvik.system.NativeStart.main(Native Method) 
05-28 16:48:12.624: E/AndroidRuntime(4260): Caused by: java.lang.ClassCastException: android.view.View cannot be cast to android.widget.ToggleButton 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at com.mho.circleofdeathapp.PlayActivity.onCreate(PlayActivity.java:69) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at android.app.Activity.performCreate(Activity.java:5104) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
05-28 16:48:12.624: E/AndroidRuntime(4260):  ... 11 more 

在我onCreate()方法,我只投通過ID視圖OT了右按鈕(ToggleButtonButton)。如果我不更改佈局XML中的設置,這一切都工作正常,但如果我這樣做,如果我啓動Activity,我會得到相應的異常。

編輯:添加onCreate()方法。

@Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_play); 
    // Show the Up button in the action bar. 
    setupActionBar(); 

    nextCardButton = (Button) findViewById(R.id.button_next_card); 
    nextCardButton.setOnClickListener(this); 

    kloCardButton = (Button) findViewById(R.id.button_klo_card); 
    kloCardButton.setOnClickListener(this); 

    kingButton = (Button) findViewById(R.id.button_king); 
    kingButton.setOnClickListener(this); 

    soundButton = (ToggleButton) findViewById(R.id.button_music); 
    soundButton.setOnClickListener(this); 

    imageView = (ImageView) findViewById(R.id.image_card); 
    imageView.setImageBitmap(getImage(R.drawable.bier_head)); 

    cardTextView = (TextView) findViewById(R.id.text_card_info); 

    initialize(); 
    } 
+3

嘗試清潔您的活動打造 – Raghunandan

+0

的問題 –

+0

嘗試使用tablerow的所有您的按鈕。 –

回答

0

好吧我找到了may問題的解決方案,但我不知道爲什麼這個工作。對於每個按鈕,我刪除了標籤android:visibility="visible",現在它正在工作。

相關問題