1

jsonリクエストにnull値が含まれている場合は、AsyncTaskをキャンセルして、Toastメッセージを表示したいと思います。

private class PostTask extends AsyncTask<String, Integer, String>
{
    //Before running code in the separate thread
    @Override
    protected void onPreExecute() 
    {

        progressDialog = new ProgressDialog(login.this);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        progressDialog.setMessage("please wait...");
        progressDialog.setCancelable(false);
        progressDialog.setIndeterminate(false);
        progressDialog.setMax(100);
        progressDialog.setProgress(0);
        progressDialog.show();
    }
    //The code to be executed in a background thread.
    @Override
    protected  String doInBackground(String... params) 
    {
        String url=params[0];
        Parser parse = new Parser();
        try{    
            String email = textinput.getText().toString();
            String pass = password.getText().toString();
            JSONObject JsonString = parse.getJSONFromUrl(url,email,pass);

            //String email = JsonString.getString("email");
            Constants.ID = JsonString.getString("id");

        }
         catch (JSONException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              }

        catch (NullPointerException e){

             publishProgress(1);
            //Toast.makeText(login.this, "Invalid credentials", Toast.LENGTH_LONG).show();
        }
         return "All Done!";
    }
    //Update the progress
    @Override
    protected void onProgressUpdate(Integer... values) 
    {
        //set the current progress of the progress dialog
    //  progressDialog.setProgress(values[0]);  
        //Toast.makeText(login.this, "Invalid credentials", Toast.LENGTH_LONG).show();
    }
    //after executing the code in the thread
    @Override
      protected void onPostExecute(String result) {

          super.onPostExecute(result);
          startActivity(new Intent("com.example.mysampleapp.DASHBOARDTAB"));
          progressDialog.dismiss();      
     }
}

asyncリクエストでnullを取得JSONし、呼び出している場所と同じアクティビティでメッセージを表示した場合にタスクをキャンセルするキャンセル方法はありAsyncTaskますか?

4

2 に答える 2

2

JSONがnullの場合は、次のようなエラーコードを返してみてください。

   catch (NullPointerException e){

         publishProgress(1);
        return "Error";
    }

次にonPostExecute()

@Override
  protected void onPostExecute(String result) {
      super.onPostExecute(result);

      if(result.equals("Error")) {
          //Error
      } else {
          startActivity(new Intent("com.example.mysampleapp.DASHBOARDTAB"));
          progressDialog.dismiss();      
      }
 }
于 2012-12-19T12:14:50.337 に答える
1

これを試して:

postTask = new PostTask();

if (postTask != null)
 {
   postTask.cancel(true);
   postTask = null;
}

ありがとう。

于 2012-12-19T12:11:39.297 に答える