android - 从 View 寻呼机内部的 fragment 中获取 Activity 返回 null

标签 android android-fragments android-viewpager

我在 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/

相关文章:

Android 在后台运行任务时关闭屏幕

java - fragment 间通信 onclick textview 为 null 但在 oncreate View 中 textview 存在

java - 从 Activity 返回后保留 fragment

android ViewPager xml膨胀错误

android - ViewPager - 根据当前页面更改向上按钮图标

android - 安装 PhoneGap,执行命令时出错 'ant'

android - 我应该如何验证电子邮件地址?

android - Fragment.replace 不会删除一个 fragment ,而是与多个其他 fragment 一起使用

android-viewpager - 带webView的NestedScrollView仅滚动NestedScrollView

横向模式下的 Android 搜索对话框