I have AsyncTask when the onPreExecute function is executed, it gives me an exception
** java.lang.IllegalStateException: The com.android.internal.policy.impl.PhoneWindow$DecorView@44ea0e20 view has already been added to the manager window. **
when the progressDialog show () method is called.
My activity
public class TopNewsActivity extends ListActivity { public static final String LOG_TAG = "Infra"; private ProgressDialog progressDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listplaceholder); new BackgroundAsyncTask().execute(); } public class BackgroundAsyncTask extends AsyncTask<String, Integer, ArrayList<HashMap<String, String>>> { @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = new ProgressDialog(TopNewsActivity.this); progressDialog.setCancelable(true); progressDialog.setMessage("Loading..."); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.setProgress(0); progressDialog.show(); } @Override protected ArrayList<HashMap<String, String>> doInBackground(String... paths) { ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); String xml = XMLfunctions.getTopNewsXML(); Document doc = XMLfunctions.XMLfromString(xml); int numResults = XMLfunctions.numResults(doc); Log.d(LOG_TAG, "Number of Results: " + numResults); if ((numResults <= 0)) { Toast.makeText(TopNewsActivity.this, "No Result Found",Toast.LENGTH_LONG).show(); finish(); } NodeList nodes = doc.getElementsByTagName("result"); for (int i = 0; i < nodes.getLength(); i++) { HashMap<String, String> map = new HashMap<String, String>(); Element e = (Element) nodes.item(i); map.put("id", XMLfunctions.getValue(e, "id")); map.put("title", XMLfunctions.getValue(e, "title")); mylist.add(map); } return mylist; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); } protected void onPostExecute(ArrayList<HashMap<String, String>> result) { ListAdapter adapter = new SimpleAdapter(TopNewsActivity.this, result, R.layout.list_item, new String[] { "title" }, new int[] { R.id.item_title }); setListAdapter(adapter); progressDialog.dismiss(); final ListView lv = getListView(); lv.setTextFilterEnabled(true); lv.setOnItemClickListener(new OnItemClickListener() { @SuppressWarnings("unchecked") @Override public void onItemClick(AdapterView<?> a, View view, final int position, long id) { HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position); Intent i = new Intent(TopNewsActivity.this, NewsDetails.class); i.putExtra("content_id", o.get("id")); i.putExtra("title", o.get("title")); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); View v = TopNewsGroup.group.getLocalActivityManager().startActivity("ShowNews", i).getDecorView();
Please, help!!!!!
source share