片段内的ManagedQuery()

时间:2015-12-24 13:32:51

标签: java android android-fragments

我在我的oncreate函数中调用了以下函数,该函数扩展了片段活动。它显示managedQuery()上的错误。当我用Activity扩展我的课程时,它工作得很完美。但是现在我在Fragment中尝试了这个,它失败了。请提出任何建议。

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

 View rootView = inflater.inflate(R.layout.fragment_home, container, false);
 init_phone_video_grid();
 return rootView;

    }

 private void init_phone_video_grid() {
        System.gc();
        String[] proj = { MediaStore.Video.Media._ID, MediaStore.Video.Media.DATA, MediaStore.Video.Media.DISPLAY_NAME, MediaStore.Video.Media.SIZE };

        file = new File(Environment.getExternalStorageDirectory() + File.separator + "Funtube/UserData/Videos/");

        videocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, proj, MediaStore.Images.Media.DATA + " LIKE ? ",new String[] {"%"+file.getAbsolutePath().toString()+"%"}, null);

        count = videocursor.getCount();
        videolist = (ListView) findViewById(R.id.PhoneVideoList);
        videolist.setAdapter(new VideoAdapter(getApplicationContext()));
        videolist.setOnItemClickListener(videogridlistener);
    }

2 个答案:

答案 0 :(得分:1)

managedQueryActivity的方法,而不是Fragment,所以请替换

videocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, proj, MediaStore.Images.Media.DATA + " LIKE ? ",new String[] {"%"+file.getAbsolutePath().toString()+"%"}, null);

videocursor = getActivity().managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, proj, MediaStore.Images.Media.DATA + " LIKE ? ",new String[] {"%"+file.getAbsolutePath().toString()+"%"}, null);

但该方法已在API 11中弃用,Google建议使用CursorLoader代替,有一些关于如何使用它的示例:

http://developer.android.com/intl/es/training/load-data-background/setup-loader.html

http://www.compiletimeerror.com/2013/12/how-to-use-android-cursorloader.html#.Vnv42Rp96Rs

答案 1 :(得分:0)

ManagedQuery不是Fragment的方法,而是Activity的方法。它也已弃用,您应该使用CursorLoader代替。

Android Activity documentation