![](/img/trans.png)
[英]onBackPressed() finishes my fragment when there is no BackStackEntry
[英]NPE on Android BackStackEntry for onBackPressed
我正在嘗試獲取活動中加載的片段的后向計數。 這里的想法是,如果getBackStackEntryCount返回'0',請運行我的onexitCheck()方法來磨損/詢問用戶是否退出,但是我在第70行獲得了NPE,在該處獲得了getBackStackEntryCount()。
我無法弄清楚我的錯。 請看看我的方法,並在您的答案中添加更正。 謝謝
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();
}
}
我猜這:
FragmentManager.BackStackEntry backEntry = getFragmentManager().getBackStackEntryAt(
getActivity().getFragmentManager().getBackStackEntryCount());
應該變成這個:
FragmentManager.BackStackEntry backEntry = getFragmentManager().getBackStackEntryAt(
getActivity().getFragmentManager().getBackStackEntryCount() - 1);
因為計數對於一個條目返回1,對於兩個條目返回2,依此類推; 但是條目的索引從0開始。
我必須改變執行此操作的方式,然后它才能起作用。 我還需要它對所有片段都起作用,以便可以重用我的方法。 看一看我在此處編輯的SO問題,了解如何進行的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.