Android 尝试更改方向时出现空指针异常

Android 尝试更改方向时出现空指针异常,android,android-fragments,android-orientation,Android,Android Fragments,Android Orientation,更改布局时出现空指针异常。我用了碎片 当我试图改变布局中的方向时。我使用了公共类MainFragment扩展了SherlockFragment 下面是Logcat 错误如下: 05-12 14:38:27.676: E/AndroidRuntime(6773): FATAL EXCEPTION: main 05-12 14:38:27.676: E/AndroidRuntime(6773): java.lang.NullPointerException 05-12 14:38:27.676: E

更改布局时出现空指针异常。我用了碎片

当我试图改变布局中的方向时。我使用了公共类MainFragment扩展了SherlockFragment

下面是Logcat 错误如下:

05-12 14:38:27.676: E/AndroidRuntime(6773): FATAL EXCEPTION: main
05-12 14:38:27.676: E/AndroidRuntime(6773): java.lang.NullPointerException
05-12 14:38:27.676: E/AndroidRuntime(6773):     at com.android.aa.adapter.VideoListAdapter.<init>(VideoListAdapter.java:47)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at com.android.aa.tv.MainFragment$AsyncAction.onPostExecute(MainFragment.java:134)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at com.android.aa.tv.MainFragment$AsyncAction.onPostExecute(MainFragment.java:1)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at android.os.AsyncTask.finish(AsyncTask.java:590)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at android.os.AsyncTask.access$600(AsyncTask.java:149)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:603)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at android.os.Looper.loop(Looper.java:132)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at android.app.ActivityThread.main(ActivityThread.java:4123)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at java.lang.reflect.Method.invokeNative(Native Method)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at java.lang.reflect.Method.invoke(Method.java:491)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
05-12 14:38:27.676: E/AndroidRuntime(6773):     at dalvik.system.NativeStart.main(Native Method)
((ListView)rootView.findViewById(R.id.videoListView)).setAdapter(新的VideoListAdapter(getActivity(),aryThumbnail,aryUrl,aryTitle,aryDesc))

private class AsyncAction extends AsyncTask<String, Void, String> 
{           
    protected String doInBackground(String... arg0) 
    {
         callRecentVideo();
         return null;
    }

    protected void onPostExecute(String result) 
    {
         pd.dismiss();Log.e("length",String.valueOf(aryThumbnail.size()));
         ((ListView)rootView.findViewById(R.id.videoListView)).setAdapter(new VideoListAdapter(getActivity(),aryThumbnail,aryUrl,aryTitle,aryDesc));
    }

    protected void onPreExecute() 
    {
        // TODO Auto-generated method stub
        super.onPreExecute();
        pd = new ProgressDialog(getActivity());
        pd.setTitle("app");
        pd.setMessage("Please wait while we are loading..");
        pd.setIndeterminate(true);
        pd.setCancelable(false);
        pd.show();
    }
}
私有类AsyncAction扩展了AsyncTask
{           
受保护的字符串doInBackground(字符串…arg0)
{
callRecentVideo();
返回null;
}
受保护的void onPostExecute(字符串结果)
{
pd.dismise();Log.e(“长度”,String.valueOf(arynumbnail.size());
((ListView)rootView.findViewById(R.id.videoListView)).setAdapter(新的VideoListAdapter(getActivity(),aryThumbnail,aryUrl,aryTitle,aryDesc));
}
受保护的void onPreExecute()
{
//TODO自动生成的方法存根
super.onPreExecute();
pd=新建进度对话框(getActivity());
pd.setTitle(“app”);
pd.setMessage(“请稍候,我们正在加载…”);
pd.SetUndeterminate(真);
pd.可设置可取消(假);
pd.show();
}
}

问题在于,您正在重新创建片段并执行asyntask,这将导致空指针

解决方案每次更改方向时,都需要保持asyntask处于活动状态


实施良好

在我的清单中,我用这个解决了一个类似的问题:

    <activity
        android:name="<package-name>"
        android:label="<app-name>" 
        android:configChanges="orientation|keyboardHidden|screenSize">
    </activity>


VideoListAdapter.java中的第47行是什么?。当方向改变时,活动被销毁并重新创建dminflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);VideoListAdapter中的上下文来自哪里?你真的需要发布更多的代码。@Nick你在哪里发布的那部分代码code@JamieB请检查代码你能告诉我我该怎么做吗?@Nick点击链接这是一个教程如何保持AsyncTask的活力我看到了链接并添加了这两个类。现在如何使用下面的代码。请看上面的链接
    <activity
        android:name="<package-name>"
        android:label="<app-name>" 
        android:configChanges="orientation|keyboardHidden|screenSize">
    </activity>