0

Androidでグラフィックを描画するための素晴らしいチュートリアルをいくつか使用しています。ここにあるクールなジェスチャーのデモも追加したいと思いました。

http://developer.android.com/resources/articles/gestures.html

次のコード行が必要です。

GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
gestures.addOnGesturePerformedListener(this); 

これは問題なくダンディですが、デモで「Android でグラフィックスを使って遊ぶ」のコードを使用してビルドしようとしていることに気付きました。デモは理にかなっており、すべてが理にかなっていますが、以下を使用してわかりました:

setContentView(new Panel(this));

Playing With Graphics チュートリアルで要求されているように、findViewById は有効ではなくなったようで、null を返します。最初に、なぜこれが起こっているのかについてもっと愚かな質問を投稿しようとしていました.setContentViewで遊んでみると、findViewByIdがnullを返す原因がわかりました.この問題を解決する方法がわかりません. ここで欠けている鍵は何ですか? 新しいパネルがいくつかの参照を行っていることは認識していますが、ここで接続する方法がわかりません。

The: R.id.gestures は main.xml で次のように定義されています: (チュートリアルと同様)

<android.gesture.GestureOverlayView
    android:id="@+id/gestures"
    android:layout_width="fill_parent" 
    android:layout_height="0dip"
    android:layout_weight="1.0" />

だから私は確認しました

setContentView(new Panel(this))

問題を引き起こしています。したがって、android.gesture.GestureOverlayView をどうにかしてパネル クラスに追加する方法を見つけなければならないことが問題であることはわかっていますが、どうすればよいかわかりません。

これと戦った後、私は一般的に、今何をする必要があるかをどのように行うかを知っています. そのmain.xmlでパネルを作成するのと同等か、コード内のジェスチャーのためにmain.xmlでwhatsを構築する方法を理解する必要があると思います。これを行ったので、私は近くにいます: GestureOverlayView ジェスチャ = new GestureOverlayView(this);

残念ながら、親をどこにでも埋めるように指示していないので、実際には表示されないと思うので、レイアウトパラメータを見つけようと懸命に努力しています。私は正しい軌道に乗っていますか?

4

2 に答える 2

0

が動作するためfindViewByIdには、コンテキストが使用しているレイアウト ファイルを知る必要があります。それsetContentViewがそのためです。main.xml でレイアウトを定義したので、呼び出す必要があります。

setContentView(R.layout.main);

(setContentView への他の呼び出しの代わりに) 使用するレイアウトであることをアクティビティに伝えます。これを行うと、findViewByIdID「ジェスチャー」を持つビューを探す場所がわかります。

于 2011-07-19T17:38:13.560 に答える
0

私はいくつかのサンプル コードを自分で試してみましたが、実際には意味のあるものをまだ書いていませんが、別のビューを設定したためにシステムがビューを見つけられないという単純なことでしょうか?

ほとんどのサンプルでは、​​setContentView にリソースへの参照が含まれてsetContentView(R.id.gestures)います (例: )。したがって、そのビューが後で見つからないことは当然のことです。...私がこの点で完全に初心者でない限り...

于 2010-04-27T23:18:37.573 に答える