2014-07-17 57 views
0

雖然這往往是非常基本的問題,但我無法解決這個問題。我搜索了類似的問題,但沒有解決我的問題。Classcastexception:Widget不能轉換爲佈局

我創建了自己的課堂,我創造了一些基本控件,我叫這個類在我的XML作爲

<com.mypackagename.classname 
.. 
.. 
/> 

和一些看法去這裏面。而在此之前,現在我想的RelativeLayout添加爲

activity_main1.xml:

<RelativeLayout xmlns:android="schemas.android.com/apk/res/android" 
    xmlns:android1="http://schemas.android.com/apk/res/android" 

    android1:layout_width="match_parent" 

    android1:layout_height="wrap_content" > 

<com.test.MainLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainlayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 


    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <ImageView 
       android:id="@+id/drawer_image" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 
       android:src="@drawable/ic_drawer" /> 
    </LinearLayout> 
</com.test.MainLayout> 
</RelativeLayout > 

和我在我的主要活動我聲明 MainActivity:

Myview view; 
view = (Myview)this.getLayoutInflater().inflate(R.layout.activity_main1, null); 
     setContentView(view); 

MyView的地方是我有我自己的控制的類。

增加相對佈局後,我想是這樣

MainActivity1.java:

public class MainActivity1 extends FragmentActivity 
{ 

@Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState);  
    RelativeLayout item = (RelativeLayout)findViewById(R.id.item); 
     view = (Myview)this.getLayoutInflater().inflate(R.layout.activity_main1, null); 
      item.addView(view); 
    setContentView(item); // facing an error here 

.......... rest of the code 
} 

和我的佈局活動

public class MainLayout1 extends LinearLayout 
{ 
.... 

} 

在運行它拋出ClassCastException異常和錯誤是

java.lang.ClassCastException:android.widget.RelativeLayout不能轉換到com.view.layout.MainLayout

+0

是佈局貼'actiivty_main1.xml'? – Raghunandan

+0

我知道這是事實,但是,您是否已經執行了所有基本步驟,例如清理項目或關閉項目並重新打開它以及所有這些? –

+0

yes @ Raghunandan – AndroidOptimist

回答

0

視圖=(MyView的)this.getLayoutInflater()膨脹(R.layout.activity_main1,null)的;

在你的java類的這一點上,你得到了MyView對象的視圖,但它實際上是一個佈局文件實例,它返回它的父佈局在這裏它的RelativeLayout

由於膨脹(R.layout.activity_main1,null);返回RelativeLayout的對象。取而代之的是,你必須讓你的MainLayout1像(R.id.mainlayout)的實例,然後將其轉換成MyView對象,如:

RelativeLayout item = (View)this.getLayoutInflater().inflate(R.layout.activity_main1,null); 

view = (Myview) item.findViewById(R.id.mainlayout); 

item.addView(view); 

setContentView(item); 
+0

類型不匹配:無法將視圖轉換爲RelativeLayout錯誤 – AndroidOptimist

+0

請首先收集您正在膨脹的View對象(xml文件)。然後通過使用該視圖(m給出其名稱,如view1)對象嘗試findViewById來獲取您的自定義佈局(MainLayout)的實例。之後,您可以將該MainLayout對象添加到view1中。 –

+0

我改變了代碼,現在它顯示正常。謝謝你,朋友 :) – AndroidOptimist