getActivity()のAndroidソリューションをnullに
Android Solutions Getactivity Null
Android開発()がnullになっているように見えるときにgetActivityが表示される場合があります。LEDプログラムがnullポインター例外を報告した場合、解決方法が変更されました。
序文
毎日の開発では、ViewPager+Fragment
ビューのスライド、特定の部分でコンテキストロジックを使用することがよくありますContext
(基本Toast
など)が必要ですが、Fragment
ただしがみつくActivity
現在を取得する必要がある場合は、試行のコンテナActivity
コンテキストContext
合格する必要がありますgetActivity()
取得します。
ただし、プログラムの類人猿に出くわしたことがないかどうかはわかりません。getActivity()を使用すると、nullnullポインタ例外が報告されたときにプログラムが発生します。
実際、理由は次の理由で私たちに帰することができます:
(A)スイッチがフラグメント化すると、頻繁にクラッシュします
(B)システムメモリが不足しています
時間(3)水平および垂直スクリーンスイッチ
...。
上記の結果、Activity
システムは回復しますが、fragment
ライフサイクルが終了しないためActiivty
回復してリサイクルされるため、getActivity()nullの問題が発生します。
解決する
私たちは3つの解決策を考え出しました:
(A)参照コンテキストの確立
まず、Fragment
ライフサイクルを確認します:
In Fragment
ライフサイクル、ライフサイクルin onAttach()
with onDetach()
しばらくの間getActivity()
メソッドは戻りませんnull
。したがって、fragment
設立の初期化Context
参照を行うことができます。
in fragment
参照の破壊が破壊されたとき。
コードは次のように表示されます。
?1 2 3 4 5 6 7 8 9 10 11 | @Override public void onAttach(Activity activity) { super .onAttach(activity) mCtx = activity // mCtx is a member variable, context reference } @Override public void onDetach() { super .onDetach() mCtx = null } |
(B)getapplicationcontextの合理的な使用()
プロセスに一時変数を格納するために使用されますContext
コンテキスト参照は問題をある程度解決できます。 Androidでは、Application
、Service
、Activity
コンテキストがあるため、getapplicationcontext()
プログラムが閉じない限り、グローバルコンテキストを取得できますcontext
難しいnull
〜
(C)アプリケーションをカスタマイズする
3番目の方法は、実際には2番目の方法の基本原則である次のカスタムapplication
一時ストレージ内application
独自のコンテキストContext
と同じです。その過程で、単純なインタレストアクセスによってapplication
取得コンテキストContext
。
具体的な用途は次のとおりです。
(1)アプリケーションを構成リストに登録する
?1 2 3 4 | |
(2)コンテキストに保存されたonCreateアプリケーションを作成し、単一のインタレストを作成します。
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class MyApplication extends Application { private static MyApplication instance @Override public void onCreate() { super .onCreate() instance = this // store references } public static MyApplication getInstance(){ return instance } } |
総括する
ここに私の要約アプローチのほんの一部があります、もちろん、他の開発者がより良い提案を提案することができます、それはより良いです。私たちが一緒に進歩するように、みんなと共有するテクノロジー!
あなたも記事に興味があるかもしれません:
元のリンク:http://www.jianshu.com/p/9d75e328f1de