16

http://developer.android.com/guide/topics/ui/settings.htmlから取得:

注: PreferenceFragment には、独自の Context オブジェクトはありません。Context オブジェクトが必要な場合は、getActivity() を呼び出すことができます。ただし、フラグメントがアクティビティにアタッチされている場合にのみ getActivity() を呼び出すように注意してください。フラグメントがまだアタッチされていないか、ライフサイクルの最後にデタッチされた場合、getActivity() は null を返します。

PreferenceFragment の OnCreate() メソッド内から getActivity() を呼び出すと、フラグメントがそのアクティビティにアタッチされていることを確認できますか? または、このインスタンスでコンテキストを取得する方法が他にありますか?

Context が必要な理由は、PreferenceFragment から Toast 通知を使用しようとしているからです

4

1 に答える 1

19

Context が利用可能であることを確認したい場合は、 Fragment が Activity にアタッチされるまで待つ必要があります。このコールバックはonAttach(Activity)メソッドです。

フラグメントのライフサイクル状態によっては、getActivity()メソッドが null を返すこともあります。

于 2012-08-31T09:38:32.717 に答える