2012-12-15 10 views
6

これは見た目よりも難しいか、間違っています。私はフラグメント内のUI要素の内容を更新する必要があります。だから、AsyncTask <>を親からのフラグメントに配置するには?

Activity以内に、私はこの

new MyAsyncTask().execute(); 

「ノーマル」インサイドActivityようAsyncTaskタスクは、この非同期クラスはので、私は、私はフラグメントクラス内それpublic行い、その後、できることができることを考えprivateで開始親クラスのFragmentActivityから呼び出します。このような何か:

MyFragment myFragment = (MyFragment) getSupportFragmentManager().findFragmentById(R.layout.my_fragment); 
new myFragment.DoParsingAsyncTask().execute(""); //??? a silly guess 

このを動作しませんでした。

誰でも手助けできますか?

PS。私の断片はXMLで<fragment>ビューではありませんが、ViewPagerでそれらを処理します。 ViewPagerでページを表示するのに問題はありません。
PPS。この非同期クラスはリモートコンテンツの解析を開始し、フラグメント内のUI要素を埋め込みます。

+1

myFragment.new DoParsingAsyncTask()。execute( ""); ?また、タスククラスを別のクラスとして作成し、ハンドラーを使用してUIを更新することもできます。 –

+0

@GeorgyGobozov私は 'Activity'ベースのスキームを断片に変換しています。私は最も簡単な解決法を見つけようとしています。これはちょうど悪い推測でした。 – sandalone

+0

myFragment.new DoParsingAsyncTask()。execute( "")は機能しますか?この方法で内部クラスインスタンスを作成する必要があります。 –

答えて

8

これは問題を解決しないかもしれませんが、フラグメントにメソッドを作成して、非同期タスクを作成して開始することができます。それはちょうどきちんとしています。ここにコードがあります。

Fragmentから、このようなメソッドを呼び出します。

Activity myActivity = getActivity(); 
if (myActivity instanceof MyActivity) { 
    ((MyActivity) myActivity).doAsyncTaskMethod(); 
} 

また、私が既に提案した解決策を試すこともできます。

MyFragment myFragment = (MyFragment) getSupportFragmentManager().findFragmentById(R.layout.my_fragment); 
myFragment.new DoParsingAsyncTask().execute(""); 

どちらも有効です。

+0

ありがとうございました。逆のことをしたいのですが(それはフラグメントからホスティングアクティビティで非同期タスクを呼び出す)、構文を正しく取得できませんでした。私が必要としたのはgetActivity()でした。新しいMyAsyncTask()。execute()bit :) –

関連する問題