Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 刷新SherlockFragment内部的Gridview_Android_Android Fragments_Actionbarsherlock - Fatal编程技术网

Android 刷新SherlockFragment内部的Gridview

Android 刷新SherlockFragment内部的Gridview,android,android-fragments,actionbarsherlock,Android,Android Fragments,Actionbarsherlock,我正在尝试刷新我的Gridview图像,它位于SherlockFragment中 我编写了一个接口来更新适配器。但是当我尝试使用我的自定义覆盖接口(onCardTypeSelected)方法调用它时,所有视图都抛出了NullPointerException 我尽力了。我找不到解决办法。需要帮忙吗 下面是我的代码片段 public class PhotosFragment extends SherlockFragment implements CardSelectionInterface {

我正在尝试刷新我的Gridview图像,它位于SherlockFragment中

我编写了一个接口来更新适配器。但是当我尝试使用我的自定义覆盖接口(onCardTypeSelected)方法调用它时,所有视图都抛出了NullPointerException

我尽力了。我找不到解决办法。需要帮忙吗 下面是我的代码片段

 public class PhotosFragment extends SherlockFragment implements CardSelectionInterface {
    private Integer[] mThumbIds = {
            R.drawable.thumb_card1,
            R.drawable.thumb_card2,
            R.drawable.thumb_card3,
            R.drawable.thumb_card4
    };
     View view;
     GridView gridView;  
     String[] cardTypes;
     Context context;
     public static PhotoImageAdapter photoImageAdapter;

     @Override
        public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            view = inflater.inflate(R.layout.photos_layout,container,false);
            gridView = (GridView) view.findViewById(R.id.photogridview);
            context = view.getContext();
            photoImageAdapter = new PhotoImageAdapter(context, mThumbIds);
            gridView.setAdapter(photoImageAdapter); // uses the view to get the context instead of getActivity().

            cardTypes = getResources().getStringArray(R.array.card_types);

            gridView.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int position, long arg3) {
                    System.out.println("*** Clicked : " + position);
                }
            });
            System.out.println("Returning view");
            return view;
        }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        System.out.println("On Activity created");
    }

    @Override
    public void onPause() {
        super.onPause();
    }

    @Override
    public void onCardTypeSelected(TypedArray typedArrayImages) {
        mThumbIds = new Integer[typedArrayImages.length()];
        for (int i = 0; i < typedArrayImages.length(); i++) 
            mThumbIds[i] = typedArrayImages.getResourceId(i, -1);
        this.photoImageAdapter.notifyDataSetChanged();
}



    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        System.out.println("OnAttach");
    }

}
公共类PhotoFragment扩展SherlockFragment实现CardSelectionInterface{
私有整数[]mThumbIds={
R.drawable.thumb_卡1,
R.drawable.thumb_卡2,
R.drawable.thumb_card3,
R.可拉拔拇指卡4
};
视图;
GridView;
字符串类型;
语境;
公共静态光电图像适配器;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(右布局。照片\u布局,容器,假);
gridView=(gridView)view.findViewById(R.id.photogridview);
context=view.getContext();
photoImageAdapter=新的photoImageAdapter(上下文,mThumbIds);
gridView.setAdapter(photoImageAdapter);//使用视图来获取上下文,而不是getActivity()。
cardTypes=getResources().getStringArray(R.array.card_-types);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、,
整数位置,长arg3){
System.out.println(“***单击:“+位置”);
}
});
System.out.println(“返回视图”);
返回视图;
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
System.out.println(“创建活动时”);
}
@凌驾
公共无效暂停(){
super.onPause();
}
@凌驾
CardTypeSelected上的公共空白(类型Darray类型Darray图像){
mThumbIds=新整数[typedArrayImages.length()];
对于(int i=0;ithis.photoImageAdapter.notifyDataSetChanged();
}
@凌驾
公共事务主任(活动){
超级转速计(活动);
System.out.println(“OnAttach”);
}
}

Post logcat或您的适配器类..?this.photoImageAdapter.notifyDataSetChanged();在avove行中抛出NullpointrException。这就是错误,为什么你要把它作为一个静态的??只是试图更新另一个片段。当我更改非静态时,它也显示相同的异常。在刷新列表之前,它是否正常?我认为在执行onCardTypeSelected()之后,一些mThumbIds数据可能为空,这就是为什么在刷新列表之后,它会给您NPE的原因。尝试像这样更改代码。。