Android LinearLayout(LinearLayout)如何在我的课堂上可见?

Android LinearLayout(LinearLayout)如何在我的课堂上可见?,android,Android,我有两个类,“XMLParser.java”扩展活动并导入“ClassAsyncTask.java”(从我自己的库中)。现在我的XMLParser出现了问题,它说linearlayout不可见,我如何修复这个错误?谢谢 public class XMLParser extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState

我有两个类,“XMLParser.java”扩展活动并导入“ClassAsyncTask.java”(从我自己的库中)。现在我的XMLParser出现了问题,它说linearlayout不可见,我如何修复这个错误?谢谢

public class XMLParser extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ClassAsyncTask aObj = new ClassAsyncTask(
            "http://www.androidpeople.com/wp-content/uploads/2010/06/example.xml", this);
    aObj.execute();

    //THIS IS MY PROBLEM, "The field ClassAsyncTask.linearLayout is not visible"
    aObj.linearLayout = new LinearLayout(this);
    aObj.linearLayout.setOrientation(1);

    /* Set the ContentView to layout for display */
    this.setContentView(aObj.linearLayout);

}

}
这是XMLParser.java导入的ClassAsyncTask.java(来自我自己的库)

public class ClassAsyncTask extends AsyncTask<String, Void, String> {


String targetURL;
TextView name[], website[], category[];
LinearLayout linearLayout;
Context context;

public ClassAsyncTask(String site, Context ctx){
    targetURL = site;
    context = ctx;
}


@Override
protected String doInBackground(String... urls) {

    try {

        /* Handling XML */
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();

        /* Send URL to parse XML Tags */
        URL sourceUrl = new URL(targetURL);

        /* Create handler to handle XML Tags ( extends DefaultHandler ) */
        MyXMLHandler myXMLHandler = new MyXMLHandler();
        xr.setContentHandler(myXMLHandler);
        xr.parse(new InputSource(sourceUrl.openStream()));

    } catch (Exception e) {
        System.out.println("XML Pasing Excpetion = " + e);
    }
    return null;
}

/* Return-value from doInBackground */
protected void onPostExecute(String result) {

    /* Get result from MyXMLHandler SitlesList Object */
    SiteList sitesList = MyXMLHandler.sitesList;

    /* Assign TextView array length by arrayList size */
    name = new TextView[sitesList.getName().size()];
    website = new TextView[sitesList.getName().size()];
    category = new TextView[sitesList.getName().size()];

    int h = sitesList.getName().size();
    /* Set the result text in TextView and add it to layout */
    for (int i = 0; i < h; i++) {

        name[i]= new TextView(getApplicationContext());
        name[i].setText("Name = " + sitesList.getName().get(i));
        website[i]= new TextView(getApplicationContext());
        website[i].setText("Website = " + sitesList.getWebsite().get(i));
        category[i]= new TextView(getApplicationContext());
        category[i].setText("Website Category = " + sitesList.getCategory().get(i));
        linearLayout.addView(name[i]);
        linearLayout.addView(website[i]);
        linearLayout.addView(category[i]);

    }
}

}
公共类ClassAsyncTask扩展了AsyncTask{
字符串targetURL;
TextView名称[]、网站[]、类别[];
线性布局线性布局;
语境;
公共类异步任务(字符串站点,上下文ctx){
targetURL=站点;
上下文=ctx;
}
@凌驾
受保护的字符串doInBackground(字符串…URL){
试一试{
/*处理XML*/
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp=spf.newSAXParser();
XMLReader xr=sp.getXMLReader();
/*发送URL以解析XML标记*/
URL sourceUrl=新URL(targetURL);
/*创建处理XML标记的处理程序(扩展DefaultHandler)*/
MyXMLHandler MyXMLHandler=新的MyXMLHandler();
xr.setContentHandler(myXMLHandler);
parse(新的InputSource(sourceUrl.openStream());
}捕获(例外e){
System.out.println(“XML-Pasing expetion=“+e”);
}
返回null;
}
/*来自doInBackground的返回值*/
受保护的void onPostExecute(字符串结果){
/*从MyXMLHandler SitleList对象获取结果*/
SiteList sitesList=MyXMLHandler.sitesList;
/*按arrayList大小指定TextView数组长度*/
name=新文本视图[sitesList.getName().size()];
网站=新文本视图[sitesList.getName().size()];
category=新文本视图[sitesList.getName().size()];
int h=sitesList.getName().size();
/*在TextView中设置结果文本并将其添加到布局*/
对于(int i=0;i
我建议您不要以这种方式访问
线性布局
,而是使用setter和getter

ClassAsyncTask.java中

LinearLayout linearLayout;

public void setLinearLayout(LinearLayout linearLayout){
    this.linearLayout = linearLayout;
}


public LinearLayout getLinearLayout(){
    return linearLayout;
}

然后在
XMLParser.java
中,只需执行
LinearLayout myLinearLayout=aobj.getLinearLayout()
对布局进行所需的编辑,然后通过
aobj.setLinearLayout(myLinearLayout)
将布局返回到
ClassAsyncTask
,消息是“getLinearLayout()方法对于ClassAsyncTask类型是未定义的”,同样在setLinearLayout()中。哦,我知道了,谢谢。我认为这是eclipse中的一个错误,我一直保存它,但当我退出程序并再次打开它时,它工作了。@aaaaAndroid eclipse中的大多数问题都可以通过项目>清理来解决。:)啊,是的,我忘了这个问题。谢谢。