2011-07-12 141 views
0

這裏是什麼,我試圖做一個簡單的代碼示例:自定義ViewFlipper不工作?

public class main extends Activity { 

    public myFlipper flipper; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     flipper = (myFlipper) findViewById(R.id.viewFlipper1); 
    } 

    class myFlipper extends ViewFlipper 
    { 

     public myFlipper(Context context) 
     { 
      super(context); 
      // TODO Auto-generated constructor stub 
     } 

    } 

} 

的Java拋出一個ClassCastException當我試圖做到這一點,我究竟做錯了什麼?

回答

0

我想出了你們有興趣的人。

您需要添加一個允許您的自定義視圖類中的佈局屬性的構造函數。像這樣:

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

而且你還需要關注Cristian的例子。那麼它應該工作:)

0

您必須在XML聲明自定義視圖太:

<view class="your.package.main$myFlipper" 
    android:layout_width="fill_parent" 
    etc. 
/> 

額外的建議:類應該用大寫首字母來聲明。

+0

我的XML現在看起來是這樣的:,Eclipse說我的XML中有一個錯誤,並且不允許構建。 –

+0

編輯我的答案......讓我知道它是否有效。 – Cristian

+0

現在它拋出一個InflateException:/我認爲這是因爲我需要編寫一些自定義的膨脹行爲來處理屬性(layout_width等) –