Android layout 指定的子级已具有父级。必须调用removeView()
出于某种原因,我不断收到以下错误: java.lang.IllegalStateException:指定的子级已具有父级。必须对子级的父视图调用removeView() 我正在使用以下代码:Android layout 指定的子级已具有父级。必须调用removeView(),android-layout,android-view,Android Layout,Android View,出于某种原因,我不断收到以下错误: java.lang.IllegalStateException:指定的子级已具有父级。必须对子级的父视图调用removeView() 我正在使用以下代码: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listitem); //url is fetched from
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listitem);
//url is fetched from another class
readWebpage(imdbUrl);
}
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
}
@Override
protected void onPostExecute(String result) {
//textView.setText(result);
displayMoviesList(result);
}
}
public void readWebpage(String imdbUrl) {
}
public void displayMoviesList(String result) {
JSONObject responseObj = null;
try {
responseObj = new JSONObject(result);
JSONObject Obj = responseObj.getJSONObject("results");
JSONArray moviesListObj = Obj.getJSONArray("result");
for(int i=0 ;i<moviesListObj.length();i++) {
JSONObject e = moviesListObj.getJSONObject(i);
cover[i] = e.getString("cover");
title[i] = e.getString("title");
year[i] = e.getString("year");
director[i] = e.getString("director");
rating[i] = e.getString("rating");
details[i] = e.getString("details");
}
tl = (TableLayout) findViewById(R.id.main_table);
imgView = (ImageView)findViewById(R.id.imageID);
progressbar = (ProgressBar) findViewById(R.id.loadingBar);
//new loadImageTask().execute(cover[i].toString());
new loadImageTask().execute( URL);// it calls another function..
TextView title = (TextView)findViewById(R.id.titleID);
title.setText("TEXT");
TableRow tr = new TableRow(this);
tr.addView(imgView);
tr.addView(title);
tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
} catch(JSONException e) {
//Log.e("log_tag", "Error parsing data " + e.toString());
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.listitem);
//url是从另一个类获取的
阅读网页(imdbUrl);
}
私有类下载WebPagetTask扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…URL){
}
@凌驾
受保护的void onPostExecute(字符串结果){
//setText(结果);
显示电影列表(结果);
}
}
公共无效读取网页(字符串imdbUrl){
}
public void displayMoviesList(字符串结果){
JSONObject responseObj=null;
试一试{
responseObj=新的JSONObject(结果);
JSONObject Obj=responseObj.getJSONObject(“结果”);
JSONArray moviesListObj=Obj.getJSONArray(“结果”);
对于(int i=0;i解决方案是,我们要么在.xml文件中定义行,要么在.java文件中定义行。我在java文件中动态添加行,并使用addView。因此在.xml文件中,我们不能添加另一个视图(我们不应该为相同的视图添加行).请更具体地说明发生了什么错误。例如,您收到的错误消息是什么?抛出的是哪一行?等等。错误出现在以下行:tr,addView(imgView);错误是:java.lang.IllgalStateException:指定的子级已经有父级。您必须调用removeView()在孩子的父母身上view@TroyAlford标记。请您帮忙。错误在displayMoviesList中。我更新了您的代码以帮助您获得更多关注-不幸的是,我对Android
一无所知-因此我无法提供太多帮助。