2016-11-10 10 views
0

私はAsyncTaskをメインアクティビティに実行しており、その結果は文字列ベクトルです。このベクトルを使用して、フラグメント内のリストビューを変更したいと考えています。私はインターフェイス(Asyncresponce)を使用してベクトルをpublic void(processFinish)で取得し、Asyncresponceをフラグメントで実装し、それを使用してArrayアダプタをクリアして使用しますが、public voidが機能しません。稼働していますが、デバイスモニタに表示されません。公開無効実装はフラグメント内では機能しません

私は何が問題なのか分かりません。 主な活動asynctaskの重要部品:記事に

AsyncResponse myasync = new AsyncResponse() { 
    public void processFinish(String output[]) { 

    } 
}; 

MainActivity.FetchWeatherTask weatherTask = new MainActivity.FetchWeatherTask(myasync); 
//MainActivity.FetchWeatherTask weatherTask = new MainActivity.FetchWeatherTask(); 
weatherTask.execute("232931","82da4ddd2e8380be6dea06b177926b2d"); 

私はprocessFinish上の文字列ベクトルを渡す場所を実行します。

Log.v(LOG_TAG, "on post execute:+: "+ resultStrs[1]); 
delegate.processFinish(resultStrs); 

とフラグメント:あなたが渡す必要があります

public class MainActivityFragment extends Fragment 
implements MainActivity.AsyncResponse { 
    public String[] weatherdata = new String[5]; 
    public ArrayAdapter<String> mForecastAdapter; 
    public final String LOG_TAG_fragmet =MainActivityFragment.class.getSimpleName(); 

    @Override 
    public void processFinish(String output[]) { 
    if (output!= null){ 
     Log.v(LOG_TAG_fragmet, "this is from fragment="+ output[1]); 
     mForecastAdapter.clear(); 
    } 
    } 

答えて

0

あなたのMainActivityFragmentインスタンスを呼び出しの引数としてnew MainActivity.FetchWeatherTask(myasync);

あなたが実際に戻ってMainActivityFragment

に多分このような何かを呼び出すしていないので、あなたが渡しているAsyncResponseのインスタンスは、processFinish(Object[])のための空の実装を持っています

public class MainActivityFragment extends Fragment 
implements MainActivity.AsyncResponse { 
public String[] weatherdata = new String[5]; 
public ArrayAdapter<String> mForecastAdapter; 
public final String LOG_TAG_fragmet =MainActivityFragment.class.getSimpleName(); 

@Override 
public void processFinish(String output[]) { 

    if (output!= null){ 
     Log.v(LOG_TAG_fragmet, "this is from fragment="+ output[1]); 
     mForecastAdapter.clear(); 
    } 
} 

public void someMethod() { 
    MainActivity.FetchWeatherTask weatherTask = new MainActivity.FetchWeatherTask(this); 
    weatherTask.execute("232931","82da4ddd2e8380be6dea06b177926b2d"); 
} 
+0

はい、これは私が入れしかし、作品をそれはOncreateviewにあります。どうもありがとう – saeed

関連する問題