2016-08-01 85 views
1

我已經收窄到三行Java代碼:findViewById被充氣後返回null

public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); 
    View view = layoutInflater.inflate(R.layout.item_tile, parent, false); 
    System.out.println(view.findViewById(R.id.text_view)); 
    return new ViewHolder(view); 
} 

下面是相應的XML代碼:

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

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/text_view"/> 

</LinearLayout> 

這將打印空。爲什麼它打印空?爲什麼找不到文本視圖?

是的,這個XML文件被命名爲「item_tile.xml」,不是沒有另一個命名爲相同的東西。我已經嘗試創建新文件並將此代碼扔在那裏,但我仍然有這個完全相同的錯誤。爲什麼findViewById(...)失敗?

+1

首先,我會檢查你的進口。確保你不會意外地靜態導入'android.R'。然後我會說檢查你的'build.gradle'並確保你的源代碼集沒有改變。接下來,我將檢查視圖是否尚未膨脹。只要做'Log.d(TAG,「View:」+ view);'看看出現了什麼。最後我會說你的項目有點損壞。這是一個難以解決的問題。 –

+0

通常,您在ViewHolder構造函數內執行'findViewById',但是,如果您確定正在充氣正確的佈局,那很奇怪。 –

+0

@ChadBingham我不認爲'android.R.id.text_view'是一個有效的資源標識符。 –

回答

-1

當你調用parent.getContext()是父級片段?

+0

檢查您的R文件夾,並查看您創建的「text_view」ID的值。如果它<0,findViewById將返回null –

+0

這不是答案。 – Zon