1

まず、非同期タスクからフラグメントのメソッドにアクセスすることは良い習慣ですか?

フラグメントでポリラインを描画するために使用される LatLng のリストを生成する非同期タスクがあります。ただし、getter メソッドを使用してリストを取得しようとすると。

    public List<LatLng> getList() {
    return this.list;
}

nullpointerexceptionsフラグメント内でこれを実行する必要があるので、

while(list == null) { // FIXME delay because of this 
    list = getRoute.getList();
}   

これは、バックグラウンド タスクを持つ目的を無効にします。

非同期タスクの実行後メソッド内からメソッドを呼び出す方法はありますか?

    @Override
protected void onPostExecute(OTPResponseUI otpResponse) {
            Fragment.fragmentsMethod(getList());
            mDialog.dismiss();
    }

このようにして、プロセスダイアログを正しく表示し、リストのロード中にユーザーがハングしたままにしないようにすることができます。

更新この ようなコールバックを呼び出そうとしましたが、フラグメントのコールバック関数が実行されません。

UPDATE2 OK フラグメント インスタンスを非同期タスクに渡して、フラグメント メソッドを呼び出せるようにしました。あなたのアドバイスに従って:

カスタム AsyncTask クラスでリスト オブジェクトを作成し、それを postExecute() メソッドの Fragment に戻します。Fragment インスタンスのメソッドを直接呼び出すことでこれを行うことができます (コンストラクターを介して取得します。うまくいきます。ありがとうございます!

4

1 に答える 1