我有2个文件:Core(扩展Activity)和DwCore。我在Core子类中使用AsyncTask,我想在DwCore子类中使用Toast但我无法正确使用Core Context。
核心
class DwFiles extends AsyncTask<Void, Void, Long> {
protected Long doInBackground(Void... parms) {
long totalSize = 0;
dwCore.mainCounter(Core.this);
return totalSize;
}
}
DwCore子类
public void mainCounter(Context c){
Integer count = 0;
for(int i=0;i<count;i++){
Toast.makeText(c, count.toString(), Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:0)
你不能做任何影响工作线程UI的事情 - 包括展示祝酒词。
class DwFiles extends AsyncTask<Void, Void, Long> {
protected Long doInBackground(Void... parms) {
long totalSize = 0;
publishProgress(check_point);
return totalSize;
}
}
protected void onProgressUpdate(Integer integers) {
dwCore.mainCounter(Core.this);
}
答案 1 :(得分:0)
public void mainCounter(Context c){
Integer count = 0;
for(int i=0;i<count;i++){
Toast.makeText(getActivity(), count.toString(), Toast.LENGTH_SHORT).show();
}
}
您可以使用getActivity()函数或this.getActivity() getActivity()可以在Fragment中用于获取Fragment的父Activity(基本上是显示Fragment的Activity)。
答案 2 :(得分:0)
无法完成,因为doInBackGround在无法访问ui线程的后台线程上运行。 你可以做的是,在你的活动上创建一个自定义界面实现它,然后从onProgressUpdate()推送ui相关更新。
Interface ProgUpdate{
void uiUpdate(int update)
}
BackGround theread :
ProgUpdate listener;
onProgressUpdate(Int i){
listener.uiUpdate(i)
}