0

アプリの作成時に開始されたレイアウトにグラフ (achartengine の 2 軸グラフ) が読み込まれています

createData(); // is public void, creates data array for maChartView
setGraph();  // is public void, set tittles and font sizes, range of interests
mylayout = (LinearLayout) findViewById(R.id.chart);     
mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);

そして、ボタンを押すと、最初に表示されたグラフが別のデータセット、タイトルとROIを表示するように変更する必要があります(対象範囲、x軸とy軸の値間隔を意味します)

public void reDraw(View view){
    createData2();
    setGraph2();
    mChartView.repaint(); //mChartView is public instance of GraphicalView
}

createData()andsetGraph()メソッドに含まれるすべてのインスタンスと変数は public です。アプリケーションはエミュレーターで正常に起動し、最初のグラフはうまく表示されますが、ボタンを押しても何も起こりません:( 、理由はわかりません。

誰でも私に洞察を与えることができますか?ありがとう。

詳細を追加して createData2 を変更すると、y 値が再計算されるだけになりました。ユーザーは、グレード 2 の多項式に 3 つのパラメーターを入力できます。これらの値に応じて、対応するグラフが変化します。ユーザーがパラメーターを入力した後、これをトリガーするボタンを押します

    public void reDraw(View view){

    List<double[]> values = new ArrayList<double[]>();
    //createData2() returns a new set of y-values depending on the user inputs
    values = createData2();
    setGraph2();
    XYMultipleSeriesDataset mDataset = buildDataset(titles, x, values);
    GraphicalView mChartView;
    mylayout = (LinearLayout) findViewById(R.id.chart);
    mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);
    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);        
    mylayout.addView(mChartView, params);
    mChartView.repaint();
    }    

コードをテストすると、最初にパラメータを入力したときは正常に動作しますが、2 番目のパラメータ セットを入力しても何も起こりません。エミュレーターを回転させて描画ボタンを押すと、新しいグラフが出てきます! しかし、これはアイデアではありません。アイデアは、ボタンが押された直後に新しいグラフが再描画されるということです。

4

2 に答える 2

0

ボタンを押すと、完全に新しいチャートを作成しているように聞こえます。ただし、既存のチャートの系列のみを変更してから を呼び出す必要がありますrepaint

于 2013-06-04T08:50:21.260 に答える