[英]Making changes to fragment in Asynctask's onPostExecute() method
[英]AsyncTask's onPostExecute method gets the same parameters
我有一个CardsParser类,该类可以解析网页并返回带有WordCard对象的ArrayList 。 然后,对象将显示在TextView中。
第一个请求总是可以的。 但是后来我得到了与第一次相同的结果。 我的TextView清除,新请求运行,并且我总是从第一个ArrayList中获取对象。
我发现onPostExecute方法始终获得与参数相同的ArrayList,但是我不知道为什么,因为我每次都创建新的CardsParser,而doInBackground方法获得正确的参数。
提前致谢。
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText editText;
Button srchBtn;
TextView foundWords;
CardsParser cardsParser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
srchBtn = findViewById(R.id.srchBtn);
srchBtn.setOnClickListener(this);
foundWords = findViewById(R.id.foundWords);
foundWords.setMovementMethod(new ScrollingMovementMethod());
}
private class AsyncRequest extends AsyncTask<String, Void, ArrayList<WordCard>> {
@Override
protected ArrayList<WordCard> doInBackground(String... args) {
cardsParser = new CardsParser();
return cardsParser.parse(editText.getText().toString());
}
@Override
protected void onPostExecute(ArrayList<WordCard> cards) {
for (WordCard card : cards) {
foundWords.append(card.word);
foundWords.append("\n");
}
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.srchBtn:
foundWords.setText("");
new AsyncRequest().execute();
break;
}
}
我发现了错误。 CardsParser类每次都会生成相同的URL,这就是为什么它无法正常工作的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.