アクティビティに読み込まれたフラグメントのバックスタック数を取得しようとしています。ここでの考え方は、getBackStackEntryCount が '0' を返す場合、onexitCheck() メソッドを実行してユーザーに終了するかどうかを尋ねますが、70 行目で getBackStackEntryCount() を取得する NPE を取得しています。
何が間違っているのかわかりません。私の方法を見て、あなたの答えに修正を加えてください。サンクス。
public class RegulatoryDiscription extends Fragment {
. . .
}
. . .
//THE NPE STARTS HERE-->
FragmentManager.BackStackEntry backEntry = getFragmentManager().getBackStackEntryAt(getActivity().getFragmentManager().getBackStackEntryCount());
int bs = backEntry.getId();
public void onBackPressed() {
if (bs == 0) {
onexitCheck();
}
}
private Toast toast;
private long lastBackPressTime = 0;
public void onexitCheck() {
if (this.lastBackPressTime < System.currentTimeMillis() - 4000) {
toast = Toast.makeText(getActivity(), "Press back again to close this app", 4000);
toast.setDuration(4000);
toast.show();
this.lastBackPressTime = System.currentTimeMillis();
} else {
if (toast != null) {
toast.cancel();
}
super.getActivity().onBackPressed();
}
}