我在 Fragment Activity 中有一个 View pager,View pager 在 Activity 开始时包含两个 fragment ,我有一个休息请求,当我得到响应时,我想更新每个 fragment 内部和每个 fragment 中的 View 我正在使用 getActivity 但我的问题是我总是在平板设备上的 getActivity 上出现空指针异常,但我在手机上没有遇到这个问题
那是我的寻呼机适配器
public class Guide_ViewPager_adapter extends FragmentStatePagerAdapter {
private Guides_fragment guide_frag = new Guides_fragment();
private Maps_fragment maps_frag = new Maps_fragment();
public Guide_ViewPager_adapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return guide_frag;
case 1:
return maps_frag;
}
return null;
}
@Override
public int getCount() {
return 2;
}
}
LogCat fragment :
FATAL EXCEPTION: main Process: android.vi.com.vad, PID: 9554 java.lang.NullPointerException at android.vi.com.vad.Guides_fragment.update(Guides_fragment.java:138) at android.vi.com.vad.Guide_activity$GuideTask.onPostExecute(Guide_activity.java:213) at android.vi.com.vad.Guide_activity$GuideTask.onPostExecute(Guide_activity.java:165) at android.os.AsyncTask.finish(AsyncTask.java:632) at android.os.AsyncTask.access$600(AsyncTask.java:177) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:149) at android.app.ActivityThread.main(ActivityThread.java:5234) 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:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) at dalvik.system.NativeStart.main(Native Method)
这是我在加载数据时从 Activity 内部调用它的方法
public void update(String result) {
if (animation != null) {
animation.reset();
animation.cancel();
}
if (loaderImage != null) {
loaderImage.clearAnimation();
loaderImage.setVisibility(View.GONE);
}
if (result.equalsIgnoreCase("null")) {
if (errorImage != null) {
errorImage.setVisibility(View.VISIBLE);
}
} else {
Guide_GridView_adapter adapter = new Guide_GridView_adapter(activity.getApplicationContext(), Guide_activity.Downloads_Guides);
guides_gridView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
在这里,当我为 Activity 设置值时:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.activity = getActivity();
}
最佳答案
我已经通过在 Fragment onCreate() 中调用 setRetainInstance(true) 解决了我的问题
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
关于android - 从 View 寻呼机内部的 fragment 中获取 Activity 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34157262/