2017-07-03 98 views
1

我有2個文件:Core(extends Activity)和DwCore。我在Core子類中使用AsyncTask,我想在DwCore子類中使用Toast,但是無法正確使用Core Context。在沒有Activity的其他類文件中使用Toast擴展Android

核心

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

你不能做任何事情,從工作線程影響用戶界面 - 包括顯示祝酒。

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); 
} 
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()可用於獲取片段的父Activity(基本上是顯示片段的Activity)的Fragment中。

0

無法完成,因爲doInBackGround在不能訪問ui線程的後臺線程上運行。 你可以做的是,創建一個自定義接口在你的活動中實現它,然後從onProgressUpdate()推送與ui相關的更新。

Interface ProgUpdate{ 
void uiUpdate(int update) 
} 

BackGround theread : 
ProgUpdate listener; 

onProgressUpdate(Int i){ 
listener.uiUpdate(i) 
} 
相關問題