我在我的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);
}
答案 0 :(得分:1)
managedQuery
是Activity
的方法,而不是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
代替。