Android 尝试使用AlertDialog.Builder时片段中的java.lang.NullPointerException

Android 尝试使用AlertDialog.Builder时片段中的java.lang.NullPointerException,android,android-fragments,Android,Android Fragments,如果有必要,我需要在错误回调的片段中显示一个警报对话框。以下是错误: 05-21 11:05:33.635 31869-31869/me.myapp.local E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NullPointerException at android.view.LayoutInflater.from(LayoutInflater.java:210) at andro

如果有必要,我需要在错误回调的片段中显示一个警报对话框。以下是错误:

05-21 11:05:33.635  31869-31869/me.myapp.local E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at android.view.LayoutInflater.from(LayoutInflater.java:210)
            at android.view.ContextThemeWrapper.getSystemService(ContextThemeWrapper.java:75)
            at android.support.v7.app.AlertController$AlertParams.<init>(AlertController.java:673)
            at android.support.v7.app.AlertDialog$Builder.<init>(AlertDialog.java:280)
            at me.myapp.fragment.SectionFrag$1.failure(SectionFrag.java:179)
            at retrofit.CallbackRunnable$2.run(CallbackRunnable.java:53)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

我使用的是API 22和v4片段。让我感到困惑的问题是,只有在使用“系统返回”按钮时,我才会发生此崩溃。如果使用我的应用程序在actionbar中显示的up/back菜单项,这段代码可以正常工作

最有可能的是getActivity返回null,这意味着您的片段不再附加到某个活动。

当然,您得到的是NullPointerException,因为您的应用程序片段无法定义它所属的活动。当用户按下后退按钮时,您可以尝试定义上下文


因此,如果您在片段中使用AlertDialogs,则应改用。

您是否尝试使用getContext而不是getACtivity它对我有效

如果用户在片段中按后退按钮,而不是在我的操作栏中按后退按钮,是否会出现这种情况?在这两种情况下,都会调用我的片段的onPause。您可以在片段的ondeach方法中添加日志记录,以查看何时发生这种情况。我添加了更多的debug,当按下back按钮时,getActivity将返回null,但当按下应用程序的back/up按钮时则不会返回null
@Override
public void failure(final RetrofitError error) {
Log.wtf(TAG, error);
final AlertDialog.Builder alertDB = new     AlertDialog.Builder(getActivity(), android.support.v7.appcompat.R.style.Base_Theme_AppCompat_Dialog_Alert)
alertDB.setCancelable(false);