0

我正在尝试使用 doInBackground方法AsyncTask向网络服务器发送消息。然后使用 onPreExecute()onPostExecute(String result)方法AsyncTask将文本控件从发送数据更改为 Fineshed。

问题是在 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
4

2 回答 2

0

采用

new SendTextOperation().execute();

而不是这个

new SendTextOperation().execute("");
于 2012-12-09T19:49:33.930 回答
0

下面的链接中给出了一个完整的示例。

应用程序将 HTTP 查询发送到 Web 服务器并取回查询的内容:

示例:使用 AsyncTask 的 Android 双向网络套接字

于 2013-05-21T10:45:26.610 回答