在没有Activity的另一个类文件中使用Toast扩展了Android

时间:2017-07-03 04:15:48

标签: java android android-asynctask android-context toast

我有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();
    }
}

3 个答案:

答案 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)
}