我正在尝试使用 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