在片段错误图片廊 [英] Image Gallery in Fragment Error

查看:157
本文介绍了在片段错误图片廊的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图与它片段内的图片库的应用程序,但在code没有得到错误,但低于收到此错误。任何帮助将是真棒,只是一个初学者。如果你希望的任何更多的细节就问我。

认为它是与第34行是:GridView控件的GridView =(GridView控件)getView()findViewById(R.id.gridview);

code:

 公共类Fragment_3扩展片段{
  私有静态视图视图;
  @覆盖
  公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
      如果(查看!= NULL){
          ViewGroup中父=(ViewGroup中)view.getParent();
          如果(父!= NULL)
              parent.removeView(视图);
      }
      尝试{
          鉴于= inflater.inflate(R.layout.fragment_3,集装箱,FALSE);
      }赶上(InflateException E){
      }     GridView控件的GridView =(GridView控件)getView()findViewById(R.id.gridview)。
        gridview.setAdapter(新ImageAdapter(this.getActivity()));        gridview.setOnItemClickListener(新OnItemClickListener(){
            公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,长的id){
                Toast.makeText(Fragment_3.this.getActivity(),+位置,Toast.LENGTH_SHORT).show();
            }
        });        返回视图。
}  公共类ImageAdapter延伸BaseAdapter {
        私人语境mContext;        公共ImageAdapter(上下文C){
            mContext = C;
        }        公众诠释的getCount(){
            返回mThumbIds.length;
        }        公共对象的getItem(INT位置){
            返回null;
        }        众长getItemId(INT位置){
            返回0;
        }        //创建由适配器引用的每个项目的新的ImageView
        公共查看getView(INT位置,查看convertView,父母的ViewGroup){
            ImageView的ImageView的;
            如果(convertView == NULL){//如果它没有回收,初始化一些属性
                ImageView的=新ImageView的(mContext);
                imageView.setLayoutParams(新GridView.LayoutParams(85,85));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(8,8,8,8);
            }其他{
                ImageView的=(ImageView的)convertView;
            }            imageView.setImageResource(mThumbIds [位置]);
            返回ImageView的;
        }        //我们的图像的引用
        私人整数[] = mThumbIds {
                R.drawable.sample_2,R.drawable.sample_3,
                R.drawable.sample_4,R.drawable.sample_5,
                R.drawable.sample_6,R.drawable.sample_7,
                R.drawable.sample_0,R.drawable.sample_1,
                R.drawable.sample_2,R.drawable.sample_3,
                R.drawable.sample_4,R.drawable.sample_5,
                R.drawable.sample_6,R.drawable.sample_7,
                R.drawable.sample_0,R.drawable.sample_1,
                R.drawable.sample_2,R.drawable.sample_3,
                R.drawable.sample_4,R.drawable.sample_5,
                R.drawable.sample_6,R.drawable.sample_7
        };
    }
 }

错误

  06-24 14:02:27.385:E / AndroidRuntime(3959):致命异常:主要
 06-24 14:02:27.385:E / AndroidRuntime(3959):显示java.lang.NullPointerException
06-24 14:02:27.385:E / AndroidRuntime(3959):在com.bottlecapp.ahmetmikko.Fragment_3.onCreateView(Fragment_3.java:34)
06-24 14:02:27.385:E / AndroidRuntime(3959):在android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
06-24 14:02:27.385:E / AndroidRuntime(3959):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
06-24 14:02:27.385:E / AndroidRuntime(3959):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
06-24 14:02:27.385:E / AndroidRuntime(3959):在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
06-24 14:02:27.385:E / AndroidRuntime(3959):在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
06-24 14:02:27.385:E / AndroidRuntime(3959):在android.support.v4.app.FragmentManagerImpl $ 1.run(FragmentManager.java:429)
06-24 14:02:27.385:E / AndroidRuntime(3959):在android.os.Handler.handleCallback(Handler.java:725)
06-24 14:02:27.385:E / AndroidRuntime(3959):在android.os.Handler.dispatchMessage(Handler.java:92)
06-24 14:02:27.385:E / AndroidRuntime(3959):在android.os.Looper.loop(Looper.java:137)
06-24 14:02:27.385:E / AndroidRuntime(3959):在android.app.ActivityThread.main(ActivityThread.java:5041)
06-24 14:02:27.385:E / AndroidRuntime(3959):在java.lang.reflect.Method.invokeNative(本机方法)
06-24 14:02:27.385:E / AndroidRuntime(3959):在java.lang.reflect.Method.invoke(Method.java:511)
06-24 14:02:27.385:E / AndroidRuntime(3959):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
06-24 14:02:27.385:E / AndroidRuntime(3959):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-24 14:02:27.385:E / AndroidRuntime(3959):在dalvik.system.NativeStart.main(本机方法)


解决方案

有一个原因,你有你的onCreate导致返回查看 A try catch块?语法明智的,你不需要 getView() GridView控件,你可以做 GridView控件的GridView =(GridView控件)findViewById(R.id.gridview); 但它看起来像你得到一个NullPointerException异常。你可以让我们知道34是什么线?

I'm trying to make an app with an image gallery in it inside a fragment, but not getting errors in the code but getting this error below. Any help would be awesome, only a beginner. If you wish any more details just ask.

Think its something to do with the 34th line which is: GridView gridview = (GridView) getView().findViewById(R.id.gridview);

Code:

 public class Fragment_3 extends Fragment{
  private static View view;
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      if (view != null) {
          ViewGroup parent = (ViewGroup) view.getParent();
          if (parent != null)
              parent.removeView(view);
      }
      try {
          view = inflater.inflate(R.layout.fragment_3, container, false);
      } catch (InflateException e) {
      }

     GridView gridview = (GridView) getView().findViewById(R.id.gridview);
        gridview.setAdapter(new ImageAdapter(this.getActivity()));

        gridview.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                Toast.makeText(Fragment_3.this.getActivity(), "" + position, Toast.LENGTH_SHORT).show();
            }
        });

        return view;
}

  public class ImageAdapter extends BaseAdapter {
        private Context mContext;

        public ImageAdapter(Context c) {
            mContext = c;
        }

        public int getCount() {
            return mThumbIds.length;
        }

        public Object getItem(int position) {
            return null;
        }

        public long getItemId(int position) {
            return 0;
        }

        // create a new ImageView for each item referenced by the Adapter
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView;
            if (convertView == null) {  // if it's not recycled, initialize some attributes
                imageView = new ImageView(mContext);
                imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(8, 8, 8, 8);
            } else {
                imageView = (ImageView) convertView;
            }

            imageView.setImageResource(mThumbIds[position]);
            return imageView;
        }

        // references to our images
        private Integer[] mThumbIds = {
                R.drawable.sample_2, R.drawable.sample_3,
                R.drawable.sample_4, R.drawable.sample_5,
                R.drawable.sample_6, R.drawable.sample_7,
                R.drawable.sample_0, R.drawable.sample_1,
                R.drawable.sample_2, R.drawable.sample_3,
                R.drawable.sample_4, R.drawable.sample_5,
                R.drawable.sample_6, R.drawable.sample_7,
                R.drawable.sample_0, R.drawable.sample_1,
                R.drawable.sample_2, R.drawable.sample_3,
                R.drawable.sample_4, R.drawable.sample_5,
                R.drawable.sample_6, R.drawable.sample_7
        };
    }
 }

Error

 06-24 14:02:27.385: E/AndroidRuntime(3959): FATAL EXCEPTION: main
 06-24 14:02:27.385: E/AndroidRuntime(3959): java.lang.NullPointerException
06-24 14:02:27.385: E/AndroidRuntime(3959):     at com.bottlecapp.ahmetmikko.Fragment_3.onCreateView(Fragment_3.java:34)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at android.os.Handler.handleCallback(Handler.java:725)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at android.os.Looper.loop(Looper.java:137)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at android.app.ActivityThread.main(ActivityThread.java:5041)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at java.lang.reflect.Method.invokeNative(Native Method)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at java.lang.reflect.Method.invoke(Method.java:511)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-24 14:02:27.385: E/AndroidRuntime(3959):     at dalvik.system.NativeStart.main(Native Method)

解决方案

Is there a reason why you have a try catch block on your onCreate resulting in returning a View? Syntax wise you don't need getView() on your GridView, you can just do GridView gridview = (GridView) findViewById(R.id.gridview); But it looks like you are getting a NullPointerException. Can you let us know what line 34 is?

这篇关于在片段错误图片廊的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆