2016-02-13 115 views
-3

我是Android編程的新手,我有一個非常基本的問題,我無法弄清楚。我正在嘗試使用一系列相關佈局來製作Sudoku應用程序。但是,當我試圖改變在我的應用程序的TextViews的一個文本,我得到這個錯誤:意外轉換爲textview;佈局標記是相對佈局

Unexpected cast to textview; layout tag was relative layout

這裏任何幫助,將不勝感激!

這是產生錯誤的Java代碼:

private void message(){ 
    TextView targetTextView = (TextView) findViewById(R.id.TL_Top_Left_Box); 
    targetTextView.setText("1"); 
} 

這是基本的XML(相當刪節,因爲完整的代碼非常重複):

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="20dp" 
    android:layout_gravity="center_horizontal" 
    tools:context="com.example.android.sudoku.MainActivity"> 

<RelativeLayout 
    android:id="@+id/Sudoku_Grid" 
    android:layout_width="240dp" 
    android:layout_height="240dp" 
    android:background="@android:color/black" 
    android:layout_centerHorizontal="true"> 

    <RelativeLayout 
     android:id="@+id/Top_Left_Grid" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:background="@android:color/black" 
     android:layout_toLeftOf="@id/Top_Center_Grid"> 

     <RelativeLayout 
      android:id="@+id/TL_Top_Center_Box" 
      android:layout_width="25dp" 
      android:layout_height="25dp" 
      android:layout_centerHorizontal="true" 
      android:orientation="horizontal"> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:textColor="@android:color/black" 
       android:background="@android:color/white" 
       android:layout_marginTop="1dp" 
       android:layout_marginRight="1dp" 
       android:layout_marginBottom="1dp" 
       android:layout_marginLeft="1dp" 
       android:textSize="17sp" 
       android:gravity="center" 
       android:text="0"/> 

     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/TL_Top_Left_Box" 
      android:layout_width="25dp" 
      android:layout_height="25dp" 
      android:layout_toLeftOf="@id/TL_Top_Center_Box" 
      android:orientation="horizontal"> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:textColor="@android:color/black" 
       android:background="@android:color/white" 
       android:layout_marginTop="1dp" 
       android:layout_marginRight="1dp" 
       android:layout_marginBottom="1dp" 
       android:textSize="17sp" 
       android:gravity="center" 
       android:text="0"/> 

     </RelativeLayout> 

    </RelativeLayout> 

</RelativeLayout> 

<Button 
    android:id="@+id/Up_Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/Sudoku_Grid" 
    android:layout_marginTop="25dp" 
    android:layout_centerHorizontal="true" 
    android:textSize="20sp" 
    android:onClick="Click_1" 
    android:text="Up"/> 

</RelativeLayout> 
+1

您正在選擇相對佈局的ID而不是文本視圖。將id分配給textview並在消息函數中使用該id – Peshal

+0

正是如此,非常感謝!答案非常明顯。 – Tennisfan42

回答

0

您所要求的使用ID TL_Top_Left_Box查看並將其轉換爲TextView。在佈局中,具有該ID的視圖是一個RelativeLayout。您不能將RelativeLayout投射到TextView。

如果你期望得到一個TextView,那麼一定要請求正確的ID。但是,如果你期待着一個RelativeLayout,那就用這個類型創建一個變量,然後使用該類型進行轉換。

+0

你絕對是對的,謝謝你抓住我的錯誤,非常明顯! – Tennisfan42

1

這就是ID TL_Top_Left_Box定義:

<RelativeLayout 
    android:id="@+id/TL_Top_Left_Box" 
    android:layout_width="25dp" 
    android:layout_height="25dp" 
    android:layout_toLeftOf="@id/TL_Top_Center_Box" 
    android:orientation="horizontal"> 

你可能想要刪除ID行並將其添加到由RelativeLayout,而不是包含在TextView

<TextView 
    android:id="@+id/TL_Top_Left_Box" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:textColor="@android:color/black" 
    android:background="@android:color/white" 
    android:layout_marginTop="1dp" 
    android:layout_marginRight="1dp" 
    android:layout_marginBottom="1dp" 
    android:layout_marginLeft="1dp" 
    android:textSize="17sp" 
    android:gravity="center" 
    android:text="0"/> 
+0

當然,如此明顯!感謝您捕捉我的錯誤,非常感謝! – Tennisfan42

0
<**RelativeLayout** 
      android:id="@+id/TL_Top_Center_Box" 
      android:layout_width="25dp" 
      android:layout_height="25dp" 
      android:layout_centerHorizontal="true" 
      android:orientation="horizontal"> 

RelativeLayout不是TextView