我需要在Fragment中显示一个警告对话框(如果重要的话,在错误回调内)。这是错误:
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)
以下是代码部分:
@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);
我正在使用API 22和v4片段。让我感到困惑的问题是,如果使用系统BACK按钮,我 仅 会导致此崩溃。如果使用我在操作栏中显示的应用程序的上/下菜单项,则此部分代码可以正常工作。
答案 0 :(得分:0)
很可能<br/>
正在返回getActivity()
,这意味着您的片段不再附加到某个活动。
答案 1 :(得分:0)
当然,您正在获得NullPointerException
,因为您的应用程序片段无法定义它所属的Activity。您可以尝试在用户按下后退按钮时定义上下文。
因此,如果您在片段中使用AlertDialogs,则应使用DialogFragment代替。
答案 2 :(得分:0)
你试试getContext()而不是getACtivity()它对我有用吗