6514


[Volleyのリクエストが行われない](https://ja.stackoverflow.com/questions/6474/volley%E3%81%AE%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%8C%E8%A1%8C%E3%82%8F%E3%82%8C%E3%81%AA%E3%81%84)の質問をさせて頂いたものです｡
これの原因はVolleyのリクエストが終了する前に､そのVolleyのリクエストを格納する変数を参照したために､`NullPointerException`が出てしまうというものだとわかりました｡  
現在の構成としては､Volleyリクエストを行う`Activity A`､その`Activity A`上で動作する`Fragment
A`となっています｡この`Fragment A`で`Activity A`で行われるVolleyリクエストで取得できるデータを取得し､参照しています｡
このデータ取得処理は`Fragment A`の`onActivityCreated()`で行い､そこで､そのリクエストにより得られ､`Activity
A`から受け取るであろうデータを参照しています｡ なので､`Fragment A`の`onActivityCreated()`ではまだ`Activity
A`のVolleyリクエストが終了していないことがわかります｡ これはデバッグし確認したのでわかりました｡

そこで､`Fragment A`での参照を､`Activity A`でのVolleyリクエスト終了後まで待たせることは可能でしょうか｡  
ちなみに`Fragment A`での参照処理をコメントで括った結果､`Activity
A`でのVolleyリクエストは正常に行われ､データも取得出来ていましたので､Volleyリクエストに問題はないとわかりました｡


CC BY-SA 3.0
2015-02-15T01:50:03.143
6502
2015-02-15T05:53:25.783
2017-04-13T12:52:38.920
-1
7232
question
android android-volley android-lifecycle
Volleyリクエストが終わるまで処理を待つ｡


Volley のリクエストの結果を onActivityCreated() を参照できるという前提がよくないので  
Volley に対するリクエストの結果が返ってきた段階でActivity 側から Fragment に  
データを渡してあげましょう。

一般的な話として、Fragment から Activity 側の変数を参照するのは設計として  
よくありません。


CC BY-SA 3.0
2015-02-15T04:47:08.627
6507
2015-02-15T04:47:08.627
319
6502
answer


[volleyのリクエストが行われない](https://ja.stackoverflow.com/questions/6474/volley%E3%81%AE%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%8C%E8%A1%8C%E3%82%8F%E3%82%8C%E3%81%AA%E3%81%84)の`videoRequest()`を例にしつつ、多分に推測を含むコードになりますが、

[code]

    @Override
    public void onResponse(JSONObject response) {
        VideoItems result = handleVideoDetailResponse(response);
        // Fragmentを取得するためのidを設定する
        VideoInfoFragment videoInfoFragment = (VideoInfoFragment)getSupportFragmentManager().findFragmentById(R.id.video_info_fragment);
        if(videoInfoFragment != null) {
            // Activityから参照できるスコープで、レスポンスを受け取るメソッドを作成する
            videoInfoFragment.showVideoInfo(result);
        }
    }
    
[/code]

`Fragment`の`onActivityCreated()`の時点では、データを取得できていないので、`Activity`から`Fragment`へ取得したデータを渡すメソッドを作る必要があります。


CC BY-SA 3.0
2015-02-15T05:53:25.783
6514
2015-02-15T05:53:25.783
2017-04-13T12:52:38.920
-1
5337
6502
answer