0

Asynctaskクラスの別のクラスからビューを呼び出そうとしていますが、機能していないようです。

これが私のAsyncTackです

private class parseSite extends AsyncTask<String, Void, List<Integer>> {

    protected List<Integer> doInBackground(String... arg) {
     List<Integer> output = new ArrayList<Integer>();
        try {
            htmlHelper hh = new htmlHelper(new URL(arg[0]));
            output = hh.htmlHelper(arg[0]);
        } catch (Exception e) {
            System.out.println("Error");
        }
        return output;
    }

    protected void onPostExecute(List<Integer> exe) {

        graph salesView = new graph();
        View chartView = salesView.getView(this);
        chartView.setLayoutParams(new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.FILL_PARENT, 1f));
        LinearLayout layout = (LinearLayout) findViewById(R.id.linearview);

        layout.addView(chartView, 0);

    }
}

そして、これがアクティビティ「グラフ」のようになります

public class graph {

public View getView(Context context) (...etc.)

ビューを呼び出せない理由がわかりません。

4

2 に答える 2

1

を拡張するなど、何らかの方法でgraph拡張することを意図していて、それが内部で定義されていると仮定して、次の変更を行います。ContextActivityparseSitegraph

View chartView = salesView.getView(graph.this);

元のコードでthisは、はparseSite拡張されないものを参照していますContext(そしてgraphおそらく意図したとおりに参照していません)。

ちなみに、一般的なJavaスタイルでは、クラスは大文字で名前を付ける必要があります。つまり、でGraphはありませんgraph

于 2013-01-17T21:09:47.717 に答える
1

問題は、ビューを作成した他のスレッドからビューにアクセスしようとすることだと思います。通常の方法は使用することrunOnUiThread()です:

(activity).runOnUiThread(new Runnable() {
     public void run() {

 //call anything to your View objects

    }
});
于 2013-01-17T21:21:32.040 に答える