0

簡潔なタイトルで申し訳ありません。メインの GUI スレッドから遠ざけるために、CanvasThread で実行されるクラスで描画する Android アプリがあります。しかし今、クエリから DataHelper クラスへのデータに基づいて四角形を描画したい場合。DataHelper をインスタンス化したい場合、DataHelper にDataHelper dh = new DataHelper(this);別のコンストラクターが必要であるという苦情が表示されます。このコンストラクターは、Context ではなく PanelChart を引数として受け取ります。どうしてこれなの?

これは私の PanelChart クラスです:

public class PanelChart extends SurfaceView implements SurfaceHolder.Callback {
private CanvasThread canvasthread ;
private SurfaceView sf;
private DataHelper dh ;

public PanelChart(Context context, AttributeSet attrs) {
    super(context, attrs);


getHolder().addCallback(this);
canvasthread = new CanvasThread(getHolder(), this);
sf = (SurfaceView) findViewById(R.id.SurfaceView01);
setFocusable(true);



  //getData(dh);

}

getData(dh); DataHelper を呼び出して描画に必要な情報を取得するメソッドを呼び出したい場所からです。

DataHelper で別のコンストラクターを作成する必要がありますか? 別のクラスでクエリを実行し、それを PanelChart クラスに送信する必要がありますか?

ありがとう!

4

1 に答える 1

1

PanelChartコンストラクターのコンテキストパラメーターを使用する必要があると思います。これは、PanelChartを作成するActivityのコンテキストです。

public class PanelChart extends SurfaceView implements SurfaceHolder.Callback {
private CanvasThread canvasthread ;
private SurfaceView sf;
private DataHelper dh ;

public PanelChart(Context context, AttributeSet attrs) {
    super(context, attrs);

DataHelper dh = new DataHelper(context);
getHolder().addCallback(this);
canvasthread = new CanvasThread(getHolder(), this);
sf = (SurfaceView) findViewById(R.id.SurfaceView01);
setFocusable(true);


}
于 2011-06-04T08:46:18.723 に答える