簡體   English   中英

適用於onBackPressed的Android BackStackEntry上的NPE

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM