2016-08-01 4 views
1

を膨張された後にヌルを返す私は、Javaコードの3行にそれを絞り込むました:findViewByIdは

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> 

これはnullを出力します。なぜそれはnullを出力するのですか?テキストビューが見つからないのはなぜですか?

はい、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