我的目標是從佈局誇大我的自定義視圖佈局氣筒充氣,我的自定義視圖中的FrameLayout而不是
自定義視圖佈局:
<net.rhyboo.com.game_test.Piece xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:id="@+id/piece_view">
</net.rhyboo.com.game_test.Piece>
用這個佈局相關類:
package net.rhyboo.com.game_test;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;
public class Piece extends ImageView {
public Piece(Context context, AttributeSet atrs) {
super(context,atrs);
}
public Piece(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
}
但是當我嘗試誇大代碼:
//get layout inflater
LayoutInflater li=(LayoutInflater)activity.getSystemService(Service.LAYOUT_INFLATER_SERVICE);
//parent view for my custom view
FrameLayout gf =(FrameLayout)fragment.getView().findViewById(R.id.game_field);
//inflation attempt
Piece p=(Piece) li.inflate(R.layout.piece_view,gf);
我得到了錯誤
java.lang.ClassCastException:android.widget.FrameLayout不能轉換到net.rhyboo.com.game_test.Piece
爲什麼佈局吹氣產生的FrameLayout而類型我的觀點是Piece,它是ImageView的子類?
發佈您的完整xml – Nikhil
'片p =(片)li.inflate(R.layout.piece_view,gf);'這行似乎返回父視圖,而不是一個裏面。嘗試在該視圖上調用'findViewById',如'View view = li.inflate(R.layout.piece_view,gf); P片=(片)view.findViewById(R.id.piece_view);' – Vucko