2012-12-09 57 views
0

我试图使用doInBackground方法AsyncTask向Web服务器发送消息。然后使用AsyncTaskonPreExecute()onPostExecute(String result)方法将文本控件从发送数据更改为Fineshed。Android:尝试使用AsyncTask与Web服务器通信

问题是,AsyncTask String类内部我无法访问外部类中声明的任何变量。因此我无法在这些方法中更改我的TextView。我得到了,所以mSEnd.setText("Sending data")给我mSend未定义。

有没有办法使用我在外部类中声明的变量?

public class EndOfWorldActivity extends cBase implements OnClickListener { 

    TextView textCountDown; 
    TextView textPercent; 

    public void onClick(View v) { 
     Intent i; 
     switch(v.getId()) 
     { 

     case R.id.butVote3: 
       // Start ASync Task 
      new SendTextOperation().execute("");  
      break; 


     case R.id.buGame: 
       // Start ASync Task 
      new SendTextOperation().execute(""); 
     break; 
     } 
    } 


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

     @Override 
     protected void onPreExecute() { 

      //Update UI here 
      mSEnd undefined error 
      mSend.setText("Sending your vote to server"); 
      mSend.invalidate(); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
       // Talk to server here to avoid Ui hanging 
       // talk to server method undefined     
       TalkToServer(mYes[mPes-1]); 
       return null; 
     }  

     @Override 
     protected void onPostExecute(String result) { 
       // Update screen here after talk to server end 

        UpdateScreen(); 
        mSend .setText(""); 
     } 

    } 
} // end of class 

回答

0

使用

new SendTextOperation().execute(); 

,而不是这个

new SendTextOperation().execute("");