在我的应用程序中,我的onPostExecute
执行某种方法,如果我的Web服务没有返回任何数据。在我的一个老问题中,我遇到过这样的问题,您可以在这里看到onPostExecute causing application to crash现在,如果您在该链接中阅读我的问题,那么您会知道,当我的应用程序返回值"0"
时,它会崩溃。但现在我的问题是不同的,每当我的Web服务确实返回计数"0"
我的应用程序显示一个空白布局,而不是执行我希望它执行的方法。有人可以在我的onPostExecute
长时间,并帮助我解决这个问题。onPostExecute不执行我的方法
final String TAG_RESULTS = "results";
final String TAG_QUESTION_SUBJECT = "Subject";
final String TAG_QUESTION_NUMANSWERS = "NumAnswers";
final String TAG_QUESTION = "question";
final String TAG_QUESTION_CONTENT = "Content";
final String TAG_QUESTION_CHOSENANSWER = "ChosenAnswer";
final String TAG_ANSWERS = "Answers";
final String TAG_ANSWER = "Answer";
final String TAG_ANSWERS_CONTENT = "content";
final String TAG_QUERY = "query";
final String TAG_COUNT = "count";
ProgressDialog pDialog;
LoadAllData mTask;
....
保护字符串doInBackground(字符串参数... args){
pDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
public void onCancel(DialogInterface dialog) {
mTask.cancel(true);
finish();
}
});
try {
Intent in = getIntent();
String searchTerm = in.getStringExtra("TAG_SEARCH");
String query = URLEncoder.encode(searchTerm, "utf-8");
String URL = "http://example.com";
JSONParsser jParser = new JSONParsser();
JSONObject json = jParser.readJSONFeed(URL);
try {
JSONArray questions = json.getJSONObject("all").getJSONArray("questions");
for(int i = 0; i < questions.length(); i++) {
JSONObject question = questions.getJSONObject(i);
String Subject = question.getString(TAG_QUESTION_SUBJECT);
String ChosenAnswer = question.getString(TAG_QUESTION_CHOSENANSWER);
String Content = question.getString(TAG_QUESTION_CONTENT);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_QUESTION_SUBJECT, Subject);
map.put(TAG_QUESTION_CONTENT, Content);
map.put(TAG_QUESTION_CHOSENANSWER, ChosenAnswer);
questionList.add(map);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String file_URL) {
if(file_URL!=null && file_URL.equals("0")) {
pDialog.dismiss();
Toast.makeText(ListView.this, "No data found", Toast.LENGTH_SHORT).show();
finish();
} else {
if (pDialog != null && pDialog.isShowing())
pDialog.dismiss();
ListAdapter adapter = new SimpleAdapter(getBaseContext(), questionList,
R.layout.listelements,
new String[] { TAG_QUESTION_SUBJECT }, new int[] {
R.id.Subject,});
setListAdapter(adapter);
}
}
这就是数据看起来,当它返回count "0"
09-02 00:25:55.466: D/JSON String(882): {
09-02 00:25:55.466: D/JSON String(882): "all" : {
09-02 00:25:55.466: D/JSON String(882): "count" : 0,
09-02 00:25:55.466: D/JSON String(882): "questions" : [ ]
09-02 00:25:55.466: D/JSON String(882): }
09-02 00:25:55.466: D/JSON String(882): }
像
数据看起来像什么时它返回数据或有效count
08-30 00:36:07.917: D/JSON String(1891): {
08-30 00:36:07.917: D/JSON String(1891): "all" : {
08-30 00:36:07.917: D/JSON String(1891): "count" : 25,
08-30 00:36:07.917: D/JSON String(1891): "questions" : [ {
08-30 00:36:07.917: D/JSON String(1891): "Id" : "20100728112033AAb4hTA",
08-30 00:36:07.917: D/JSON String(1891): "Subject" : "What is the oldest a bitch can more or less safely breed?",
08-30 00:36:07.917: D/JSON String(1891): "Content" : "Don't worry I'm not going to breed - both my bitches are getting neutered in the next year, as is my dog! Just that me and a friend were talking about it after talking to the man who gave me Misty (my border collie) who said she could still breed at 7 - I thought the oldest was 5?\n",
08-30 00:36:07.917: D/JSON String(1891): "Date" : "2010-07-28 18:20:33",
08-30 00:36:07.917: D/JSON String(1891): "Timestamp" : "1280341233",
08-30 00:36:07.917: D/JSON String(1891): "Link" : "http://answers.yahoo.com/question/?qid=20100728112033AAb4hTA",
08-30 00:36:07.917: D/JSON String(1891): "Type" : "Answered",
08-30 00:36:07.917: D/JSON String(1891): "CategoryId" : 396546021,
08-30 00:36:07.917: D/JSON String(1891): "CategoryName" : "Dogs",
08-30 00:36:07.917: D/JSON String(1891): "UserId" : "cP16Ctgxaa",
08-30 00:36:07.917: D/JSON String(1891): "UserNick" : "Kiko",
08-30 00:36:07.917: D/JSON String(1891): "UserPhotoURL" : "http://l.yimg.com/dg/users/1t1USxJpxAAEBQOGZjBMW0-5Wp_EG.medium.jpg",
08-30 00:36:07.917: D/JSON String(1891): "NumAnswers" : 8,
08-30 00:36:07.917: D/JSON String(1891): "NumComments" : 0,
08-30 00:36:07.917: D/JSON String(1891): "ChosenAnswer" : "You just \"imagined\" that ,dear...not \"thought\". & your imagination is WRONG.\r\n\r\n9 or even 10,for a healthy TOP-PRODUCING bitc-h.\r\n\r\n\r\n\r\n*&* bitches are SPAYED & dogs are CASTRATED......big scary correct ADULT words.",
08-30 00:36:07.917: D/JSON String(1891): "ChosenAnswererId" : "clN6YITvaa",
08-30 00:36:07.917: D/JSON String(1891): "ChosenAnswererNick" : "Debunker",
08-30 00:36:07.917: D/JSON String(1891): "ChosenAnswerTimestamp" : "1280317077",
08-30 00:36:07.917: D/JSON String(1891): "ChosenAnswerAwardTimestamp" : "1280835336"
08-30 00:36:07.917: D/JSON String(1891): }, {
为什么屏幕是空白的,因为它试图填充我的列表视图,但计数为零,所以这就是为什么它是空白的。我只需要知道为什么它不会执行if(file_URL!=null && file_URL.equals("0")) { pDialog.dismiss(); Toast.makeText(ListView.this, "No data found", Toast.LENGTH_SHORT).show(); finish();
当它返回count "0"
因此,无论何时您不止一次运行它?我很困惑... – codeMagic
我很抱歉我以错误的方式解释了我的问题......在链接中的旧问题中,当我的Web服务DOESNT返回count“”0“时,它导致我的应用程序崩溃。这是当我建议使用if(file_URL!= null && file_URL.equals(“0”))'来检查Web服务是否返回'0',以便我的应用程序不会崩溃,如果Web服务不返回'0'。但是当我的网络服务返回'0'时,它会显示空白屏幕 –
不,这就是我阅读它的方式。我说的是我不知道你想要发生什么,如果它* *返回“0”'。你正在调用'finish();'所以它会关闭这个'Activity'。 – codeMagic