我正在尝试在主要活动中从list1
ArrayList
方法返回onPostExecute
。我将返回的ArrayList分配给主要活动的searchingText ArrayList。我无法在AsyncTask
btnSearch
中获取searchText ArrayList的元素。请告诉我代码中的错误。
onClickListener
答案 0 :(得分:0)
您不能通过putExtra()
将ArrayList放入额外内容中,而必须使用putStringArrayListExtra()
。请尝试以下代码。
Intent intent = new Intent(MainActivity.this,WordsFound.class);
intent.putStringArrayListExtra("searchResults",searchedText);
startActivity(intent);
答案 1 :(得分:0)
问题出在以下代码中:
findViewById(R.id.btnSearch).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(String word: wordList){
new DoWork(MainActivity.this).execute(word);
}
Intent intent = new Intent(MainActivity.this, WordsFound.class);
intent.putExtra("searchResults",searchedText);
startActivity(intent);
}
});
让我们剖析代码。以下代码没问题。这是点击监听器的常用代码:
findViewById(R.id.btnSearch).setOnClickListener(new View.OnClickListener(){ @覆盖 public void onClick(查看v){ ... }
现在,我们从以下代码中查看正文代码:
for(String word: wordList){
new DoWork(MainActivity.this).execute(word);
}
我们知道DoWork
是一个执行异步过程的AsyncTask。因此,即使DoWork尚未完成其流程,也会执行下一个代码。
让我们看下一个代码:
Intent intent = new Intent(MainActivity.this, WordsFound.class);
intent.putExtra("searchResults", searchedText);
startActivity(intent);
这里你把searchedText
变量的额外信息放在onCreate中,该变量只用于:
searchText = new ArrayList<String>();
因此,在设置额外内容时,您将始终拥有空列表。
要克服空列表问题,您只需在DoWork
完成其工作后发送额外信息。您可以尝试在setResult