2017-07-03 12 views
1

Core(拡張アクティビティ)とDwCoreの2つのファイルがあります。 CoreサブクラスでAsyncTaskを使用していて、DwCoreサブクラスでToastを使用したいが、Core Contextを正しく取得できない。アクティビティのない別のクラスファイルで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

あなたは、ワーカースレッドから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); 
} 
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()を使用できます。

0

doInBackGroundは、uiスレッドにアクセスできないバックグラウンドスレッドで実行されるため、実行できません。 できることは、カスタムインターフェイスを作成してアクティビティに実装し、次にonProgressUpdate()からui関連の更新をプッシュすることです。

Interface ProgUpdate{ 
void uiUpdate(int update) 
} 

BackGround theread : 
ProgUpdate listener; 

onProgressUpdate(Int i){ 
listener.uiUpdate(i) 
} 
関連する問題