簡體   English   中英

DialogFragment神秘的Null指針異常

[英]DialogFragment mysterious Null Pointer Exception

我似乎無法從日食給我的堆棧跟蹤中做出頭或尾。 用來工作的代碼。 我不確定我改變了什么。 但是現在當我啟動對話框片段時,應用程序崩潰時出現以下錯誤日志。

FATAL EXCEPTION: main
 Process: com.company.appname, PID: 8962
 java.lang.NullPointerException
    at android.support.v4.app.DialogFragment.onActivityCreated(DialogFragment.java:366)
    at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1508)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:958)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115)
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:446)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5579)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
    at dalvik.system.NativeStart.main(Native Method)

我的代碼很大,所以我不確定要顯示哪個部分。 所以也許有人看到了這種神秘的崩潰,我的代碼中顯然沒有根(即因為eclipse沒有命名)

UPDATE

好。 我找到了罪魁禍首。 但我仍然不知道如何解決它。 所以我有CatDialog(現在崩潰的那個)和FacebookDialog。 所以我讓這兩個DialogFragments獨立工作。 但現在我從CatDialog的onCreateView方法中啟動FacebookDialog 這就是崩潰的原因。 如下面的代碼所示,啟動是有條件的

protected void requestFaceBookPublishPermission() {
        Log.i(TAG, "going into requestFaceBookPublishPermission");
        Session session = Session.getActiveSession();
        if (session == null || !session.isOpened() ||
            !session.isPermissionGranted(FacebookDialog.PERMISSION)) {
            FacebookDialog fb = new FacebookDialog();
            fb.show(getChildFragmentManager(), "fb");
            dismiss();
        }
        Log.i(TAG, "leaving requestFaceBookPublishPermission");

    }

你正在從requestFaceBookPublishPermission中調用dismiss() ,這完全是怪人! 如果從另一個DialogFragment的onCreateView內部調用它,則無法執行此操作。 所以你種子讓兩者分開。 但是很好的問題。

所以要明白你在做什么:在onCreateView返回視圖之前你是在解雇。 你正在搶先一步。

我之前遇到過這個問題。 然后我解雇了oncreateView里面的對話框,我得到了NullpointerException。 然后我移動我的代碼將對話框關閉到onResume(),問題得到解決!

錯誤

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_home, container, false); 

if(something){

} else{
    dismiss(); //Dismissing dialog here gives NullpointerException
    }
}
return view;

正確

 @Override
 public void onResume() {
    super.onResume();

if(something){
    } else{
        dismiss(); 
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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