根据定义,AsyncTask在不同的线程中执行。因此,您不能期望在调用execute之后立即获得结果。相反,您应该从AsyncTask完成时触发新的意图:
public void onClick(View v) { if(v == searchBtn) { String input = searchInput.getText().toString(); if(input != null && input.length() != 0) { try { new TestTask().execute(input); } catch(Exception ex) { ex.printStackTrace(); } } } }private void startSearch(PlaceList places) { Bundle bundle = new Bundle(); bundle.putParcelable("places", places); Intent i = new Intent(this, SearchResultsActivity.class); i.putExtras(bundle); startActivity(i);}private class TestTask extends AsyncTask<String, Void, PlacesList>{... @Override protected void onPostExecute(PlacesList results) {startSearch(results);if(dlg.isShowing()) dlg.dismiss(); }}


