0

以前は、カスタム テーブル レイアウトを作成するたびに、Java で子ビューを作成し、tableRow.addView(childView). 現在、すべての子ビューを手動で作成する代わりに、それらを xml で作成し、それらを tableRow にインフレートしています。

たとえば、私はそうします

RelativeLayout gameView = (RelativeLayout) mInflater.inflate(R.layout.my_game,
            new RelativeLayout(context));
…  //edits to gameView
gameView.requestLayout();
((ViewGroup) gameView.getParent()).removeAllViews();
tableRow.addView(gameView);
addView(tableRow);

ただし、私の問題は次のとおりです。行を省略すると、ビューに既に親があり、最初に子の親を((ViewGroup) gameView.getParent()).removeAllViews()呼び出す必要があるというエラーが表示されます。revomeViewと呼ばれるメソッドが見つかりません。removeView使用しますremoveAllViews。しかし、そうすると、親で NullPointerException が発生します。

質問: ビューを拡張してテーブル レイアウトに追加するにはどうすればよいですか?

4

1 に答える 1

1

この行を変更してみてください

RelativeLayout gameView = (RelativeLayout) mInflater.inflate(R.layout.my_game,
        new RelativeLayout(context));

RelativeLayout gameView = (RelativeLayout) mInflater.inflate(R.layout.my_game,
        null);
于 2013-07-26T23:30:08.087 に答える