2

こんにちは、簡単な質問です。2 つのフラグメントをホストするアクティビティがあります。フラグメントは、アクティビティのフッターのボタンを介して呼び出されるようになりました。フラグメントでは、基本的に同じことを行い、AsyncTask を開始し、JSON 応答を解析して ListView に表示します。唯一の違いは、レイアウト内の特定のビューを更新する際にいくつかの違いがあることです。

私の質問は、アクティビティでフラグメントとは異なるコンストラクターを使用して AsyncTask を実行し、結果をフラグメントに渡してビューを更新する方法はありますか? 今のところ私が見ることができる唯一の問題は(それが問題である場合)、どのフラグメントにデータを渡すかを知る方法です。

より良い方法はありますか、それとも問題ありませんか。すべてのフラグメントで同じ手順を実行します。コードの重複について心配しすぎていると思います

4

1 に答える 1

0

継承を使おう!

明確化のための擬似コード:

スーパーフラグメント:

abstract SuperFragment extends Fragment{

    abstract protected void updateLayoutInFragment(..);

    protected MyUpdateTask <...> {

        MyUpdateTask ( int i ){
            // first constructor
        }

        MyUpdateTask ( int i, int y ){
            // second constructor
        }

        @Override
        doInBackground(...){
            // do stuff
        }

        @Override
        postExecute(...){
            if (request was succesfull){
                 updateLayoutInFragment(..);
            }
        }
    }
}

子フラグメント

public class MyFragment extends SuperFragment {

    @Override
    onCreateView(...){
        //startTask
    }

    protected void updateLayoutInFragment(..){
        // fill layout
    }
 }
于 2012-10-03T16:49:47.487 に答える