私のアプリケーション(com.firebase.uiおよびcom.firebase.ui.authを使用する)を古いAPIレベル15(4.0 4)装置。最初に私はマニフェストタグを使用します。OnFragmentInteractionListenerをonAttach(コンテキストコンテキスト)なしで初期化する方法
<uses-sdk tools:overrideLibrary="com.firebase.ui, com.firebase.ui.auth"/>
をその後私は古いデバイス上ONATTACH(コンテキスト...)メソッドが呼び出さなっていなかったことがわかりました。
だから私はそれについていくつかの記事を読んで、これは私が読んだものに基づいて思い付いたものです:
@SuppressWarnings("deprecation")
@Override
public void onAttach(Activity activity) {
Log.d(TAG, "onAttach Activity 1A " );
super.onAttach(activity);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
setmListener(activity);
}
}
private void setmListener(Context context){
Log.d(TAG, "setmListener 1 " );
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onAttach(Context context) {
Log.d(TAG, "onAttach Context 1 " );
super.onAttach(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
setmListener(context);
}
}
コードは古いAPI 15デバイス上で実行するとONATTACH(コンテキストコンテキスト)メソッドを取得していませんonAttach(アクティビティアクティビティ)メソッドと呼ばれます(Lollipopを実行するエミュレータでも同じです)。
D/StSt_MaxWListFrag: onAttach Activity 1A
D/StSt_MaxWListFrag: setmListener 1
しかし、両方の方法を実行したが、予想通りsetmListenerは一度だけ呼び出さMと、デバイス上の
:D/StSt_MaxWListFrag: onAttach Context 1
D/StSt_MaxWListFrag: onAttach Activity 1A
D/StSt_MaxWListFrag: setmListener 1
そうは - これまでのところ、それは何の問題もなく、これまで、動作しているようです。私はここに欠けているものがあるかどうか疑問に思っています。このアプローチは頭痛の原因になるのでしょうか、それとも悪い習慣ですか? ありがとうございました!
Isnと」私は何をしましたか?あなたは何も見逃していないと言っていますか?あなたのコードは、-if-ステートメントが1つのみのクリーナーです。 –
はい、あなたの考えを確認しました。 – azizbekian