无法在Asynctask Android,java中调用View

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Asynctask Android,java中调用View相关的知识,希望对你有一定的参考价值。

我试图从我的Asynctask类中的另一个类调用该视图,但它似乎没有工作。

这是我的AsyncTask

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.)

我不明白为什么它不能调用该视图。

答案

假设您希望graph以某种方式扩展Context,例如通过扩展Activity,并且parseSitegraph中定义,请进行以下更改:

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

在原始代码中,this指的是parseSite,它不会扩展Context(并不像你可能想要的那样引用graph)。

作为旁注,在典型的Java样式中,类应该用大写字母命名,即qazxsw poi而不是qazxsw poi。

另一答案

我认为问题是您尝试从创建它的其他线程访问视图。通常的方式是使用Graph

graph

以上是关于无法在Asynctask Android,java中调用View的主要内容,如果未能解决你的问题,请参考以下文章

jdbc 无法在 android 中处理 asynctask

Android AsyncTask无法运行

如何为 Android Room 请求制作通用 AsyncTask

Android SQLite 更新无法在 AsyncTask 的后台运行

无法将值传递给Android中的AsyncTask

如何在 AsyncTask 或 RequestHandler.java 中添加基本的 auth java android?