2012-05-01 5 views
0

後これは私がは、実行AsyncTaskクラス、次のアクティビティの戻りnullpointexception

UpdatingNewsupdate = new UpdatingNews(); 
     update.execute(); 

それはexcecuteを行うことにより、それを呼び出す

private class UpdatingNews extends AsyncTask<Void, Void, String> { 

    @Override 
    protected String doInBackground(Void... params) { 
     webservice.UpdateAllNews(); 
     webservice.updateallCatNews(); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 

    } 
} 

私のAsyncTaskクラスです。それから私はこのタスクのステータスをチェックしたいのですが、私はこのようにチェックするので、ボタンをクリックすると終了しました。私がクリックした後

if (update.getStatus().toString() 
          .equals(AsyncTask.Status.FINISHED.toString())) { 
         toast = Toast.makeText(Main_FormNewUser.this, 
           "Thanks for fill in our survey form!", 
           Toast.LENGTH_SHORT); 
         toast.setGravity(Gravity.CENTER_VERTICAL 
           | Gravity.CENTER_HORIZONTAL, 0, 0); 
         toast.show(); 
         name = nametext.getText().toString(); 
         email = emailtext.getText().toString(); 
         webservice.InsertSurvey(name, email, ages, genders, 
           jobs, salaries, interesting); 
         webservice.insertFormSubmit(1); 

         startActivity(new Intent(Main_FormNewUser.this, 
           Main_AllLatestNews.class)); 
         finish(); 
        } 

、それはしかし、NullPointerExceptionでMain_AllLatestNews.classを開始します。

私はAsyncTaskを使用せずにエラーを返さないようにしようとしていますが、AsyncTaskを呼び出すとエラーが出るのですか?

+0

NPEはどの回線に接続されていますか? –

+0

あなたはlogcatを投稿できますか? – MikeIsrael

答えて

0

AsyncTaskの基本はこのブログをチェックしてください理解しているかどうかを判断するブール値を追加します。 Painless ThreadingまたはAsyncTask

あなたはonPostExecuteに結果を返すonPostExecute(文字列結果)

doInBackground()でdoInBackgroundからのリターンを()を受け入れていません。したがって、ここで必要な値やUIをonPostExecuteでのみ更新する必要があります。

+0

doinbackground()からの戻り値を受け入れる方法? –

+0

@som_rout doInBackground()でUIアクションを実行することはできませんが、doInBackgroundでデータセットを変更できます。彼がここでやっているようだ。 – MikeIsrael

+0

@mikeisraelあなたは正しい。このメソッドはwebservice.UpdateAllNews()です。 webservice.updateallCatNews();値を更新しないことがあります。 – Som

0

どのようにこのよう

などの使用onPostExecuteについては、AsyncTaskは終わりか

@Override 
protected void onPostExecute(String result) { 
    check = true; 
} 


//if (update.getStatus().toString().equals(AsyncTask.Status.FINISHED.toString())) { 
if(check){ 
        toast = Toast.makeText(Main_FormNewUser.this, 
          "Thanks for fill in our survey form!", 
          Toast.LENGTH_SHORT); 
        toast.setGravity(Gravity.CENTER_VERTICAL 
          | Gravity.CENTER_HORIZONTAL, 0, 0); 
        toast.show(); 
        name = nametext.getText().toString(); 
        email = emailtext.getText().toString(); 
        webservice.InsertSurvey(name, email, ages, genders, 
          jobs, salaries, interesting); 
        webservice.insertFormSubmit(1); 

        startActivity(new Intent(Main_FormNewUser.this, 
          Main_AllLatestNews.class)); 
        finish(); 
       } 
関連する問題