2017-11-06 14 views
0

APIレベル27.0.0(Android 8.1)でAndroid Studio 3.0を使用するようにプロジェクトをアップグレードした後、フラグメント内でgetActivity()を使用することに関連して、私は完全に大丈夫だと思った)。Android Studio 3.0 lintアクティビティへの参照に関する警告

例:

((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); 

getActivity().getMenuInflater().inflate(R.menu.pavingreport_dialog_menu, menu); 

両方の例がnull例外について文句を言います。

例:私はフィールドとして活動を追加することによって、これを修正してのonCreateか何かの間にそれを初期化することができます知っているが、これは警告のみを削除

Method invocation 'getMenuInflater' may produce 'java.lang.NullPointerException' 

...

質問:

  1. getActivityを使用してアクティビティを参照していますか?ベストプラクティスとは何ですか?
  2. これは私が無視できるASの「バグ」ですか? Fragment
+1

特定のリント警告は何ですか?その 'getActivity()'は 'null'値を返しますか? – CommonsWare

+0

[フラグメントからアクティビティへ値を渡す方法](https://stackoverflow.com/questions/41427759/how-to-pass-values-from-fragment-to-activity) –

+0

の可能な複製があります。データを送信する代わりに、オーバーライドされた関数がメニューを膨らませるようにしてください。 –

答えて

3

getActivity()サポートライブラリ27.0.0で@Nullable注釈を得ました。ジェイクに感謝します。これはnullを返すことができるので、これは期待どおりに動作していることを意味します。

+0

はい。私は彼がしたことを知っている、そしてまたそれが理由だったかもしれないと思った。しかし、ドキュメントでは、アクティビティがnullになる可能性があるとしていますか? –

+0

フラグメントがアクティビティにアタッチされていない、またはデタッチされていない場合は、コールからnullが返されます。 – Niklas

+1

この回答は、OPの質問(理由)のパート(2)に対処しているようですが、(1)(実際にそれについてやっていると思われるもの)ではありません。 – Trevor

関連する問題