Java 如何从另一个类访问内部AsyncTask类并检索其结果
这里的新手,我正试图从内部调用Java 如何从另一个类访问内部AsyncTask类并检索其结果,java,android,android-asynctask,Java,Android,Android Asynctask,这里的新手,我正试图从内部调用AsyncTask,如下所示,但它不起作用。谁能给我指一下正确的方向吗?当我从card1调用方法setcrowdstitle时,这没关系,但在尝试从AsyncTask类设置它时就不行了 class Card extends CardBase { public void setCrowdTitle(String cTitle) { CardHeader header = new CardHeader(getContext()); header.set
AsyncTask
,如下所示,但它不起作用。谁能给我指一下正确的方向吗?当我从card1
调用方法setcrowdstitle
时,这没关系,但在尝试从AsyncTask
类设置它时就不行了
class Card extends CardBase {
public void setCrowdTitle(String cTitle) {
CardHeader header = new CardHeader(getContext());
header.setTitle(cTitle);
header.setButtonExpandVisible(true);
addCardHeader(header);
}
public class HttpAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
return GET(urls[0]);
}
@Override
protected void onPostExecute(String result) {
}
}
}
class Activity {
private class LoaderAsyncTask extends AsyncTask<Void, Void, ArrayList<Card>> {
@Override
protected ArrayList<Card> doInBackground(Void... params) {
if (isAdded()) {
ArrayList<Card> cards = initcrowdCard();
return cards;
} else
return null;
}
@Override
protected void onPostExecute(ArrayList<Card> cards) {
onRefreshComplete(cards);
}
private ArrayList<Card> initcrowdCard() {
ArrayList<Card> cards = new ArrayList<>();
Card card1 = new Card(this.getActivity(), R.layout.crowd_card);
card1.setCrowdSubtitle("Url");
cards.add(card1);
Card card2 = new Card(this.getActivity(), R.layout.crowd_card);
card2.new HttpAsyncTask() {
@Override
public void onPostExecute(String picUrl) {
card2.setCrowdSubtitle(picUrl);
}
}.execute(phpScript);
cards.add(card2);
}
}
class卡扩展了CardBase{
公共void setCrowdTitle(字符串cTitle){
CardHeader header=新的CardHeader(getContext());
标题.设置标题(cTitle);
header.setButtonExpandVisible(true);
addCardHeader(标题);
}
公共类HttpAsyncTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…URL){
返回GET(url[0]);
}
@凌驾
受保护的void onPostExecute(字符串结果){
}
}
}
课堂活动{
私有类LoaderAsyncTask扩展异步任务{
@凌驾
受保护的ArrayList doInBackground(无效…参数){
if(isAdded()){
ArrayList cards=initcrowdCard();
回程卡;
}否则
返回null;
}
@凌驾
受保护的void onPostExecute(ArrayList卡){
完成(卡片);
}
私有ArrayList initcrowdCard(){
ArrayList cards=新的ArrayList();
Card card1=新卡(this.getActivity(),R.layout.crowd_卡);
card1.setCrowdSubtitle(“Url”);
卡片。添加(卡片1);
Card card2=新卡(this.getActivity(),R.layout.crowd_卡);
card2.new HttpAsyncTask(){
@凌驾
public void onPostExecute(字符串picUrl){
card2.setCrowdSubtitle(picUrl);
}
}.execute(phpScript);
卡片。添加(卡片2);
}
}
什么代码行不起作用?在类卡中定义的setCrowdSubtitle()
在哪里?@Talha编辑代码以包含setCrowdSubtitle()
方法。@NAIT不起作用的代码段是Card card2=新卡(this.getActivity(),R.layout.crowd\u Card);card2.new HttpAsyncTask(){@Override public void onPostExecute(String picUrl){card2.setcrowdstitle(picUrl);}}.execute(phpScript);cards.add(card2);
为什么要从外部重写onPostExecute()
呢?我看不出任何具体原因?你可以在onPostExecute()中调用setcrowdstitle
HttpAsyncTask
的
,它可能会在您需要将setCrowdSubtitle
声明为final的地方引发错误。另外card2.new HttpAsyncTask(){…
这一行是否会出现错误或意外行为?您指定了两行,它们可能是不同的错误,也会发布堆栈跟踪(错误日志)。哪一行代码不起作用?在类Card
中定义的setCrowdSubtitle()
在哪里?@Talha编辑代码以包含setCrowdSubtitle()
方法。@NAIT不起作用的代码是Card card2=新卡(this.getActivity(),R.layout.crowd\u Card);card2.new HttpSyncTask(){@Override public void onPostExecute(String picUrl){card2.setcrowdstitle(picUrl);}}.execute(phpScript);cards.add(card2);
为什么要从外部重写onPostExecute()
呢?我看不出任何具体原因?你可以在onPostExecute()中调用setcrowdstitle
HttpAsyncTask
的
,它可能会在需要将setcrowdstitle
声明为最终的地方引发错误。另外card2.new HttpAsyncTask(){…
这一行是否会出现错误或意外行为?您指定了两行,它们可能是不同的错误,也会发布堆栈跟踪(错误日志)。