0

私は Java のトレーニングを受けていますが、これは Android の開発への最初の進出です。

私が行ったことは、基本的にいくつかの追加情報を保持するImageButtonと呼ばれるカスタムを作成したことであり、それは正常にコンパイルされます。MapCellImageButton

私の問題はMapCell、関連する a を手続き的に作成し、xml で定義され、id 'mapTable' を持つActivitymy に追加したいときに発生します。TableLayout関連するビットは次のようになります。

Random randy = new Random();

MapCell n = new MapCell(randy.nextInt(4), this); //the random number is part of my extra info

findViewById(R.id.mapTable).addView((View)n, 20, 20); //add cell to display

私はそれから1つのエラーを取得します: The method addView(View, int, int) is undefined for the type View

私にはまったくナンセンスに聞こえます。一人で座って何も変わらなかったときに同じエラーが発生した後、そのViewキャストを絶望としてそこに入れました(明らかに、私はそれが拡張されているのですでにです)。nMapCellViewImageButton

私は同様の問題をチェックしましたが、このような問題はまったく見つかりませんでした. もっとコードを見る必要がある場合は、私に任せてください。

4

2 に答える 2

0

メソッドfindViewByIdは a を返しViewViewクラスにはメソッドがありません(このメソッドはとそのサブクラスaddViewに実装されています)。ViewGroup代わりに、次のように書く必要があります。

((TableLayout)findViewById(R.id.mapTable)).addView(n, 20, 20);

findViewByIdメソッドの戻り値を、実際にメソッドを持つクラスにキャストしましたaddView

于 2012-07-23T15:43:24.720 に答える
0

メソッドがオブジェクトをfindViewById(R.id.mapTable)返すため、この問題が発生しました。ViewAndroid では、あるビューを別のビューに追加することはできません。

、およびすべての(など)オブジェクトでaddView関数を使用できます。ViewGroupLinearLayout

于 2012-07-23T15:45:44.127 に答える