-1

何らかの理由で、次のエラーが表示され続けます。

java.lang.IllegalStateException: 指定された子にはすでに親があります。子の親ビューで removeView() を呼び出す必要があります

次のコードを使用しています。

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());
    }

エラーが表示される理由はわかりませんが、ビューに追加しているときに生成されているようです。

4

1 に答える 1

0

解決策は、.xml ファイルまたは .java ファイルで行を定義することです。Javaファイルに行を動的に追加し、addViewを使用していました。したがって、.xml ファイルでは、別のビューを追加することはできません (同じビューに行を追加するべきではありません)。

于 2012-12-09T06:40:45.647 に答える