我有以下函数,我在 oncreate 函数中调用它来扩展 fragment Activity 。它在 managedQuery()
上显示错误。当我用 Activity 扩展我的类(class)时,它效果非常好。但现在我在 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);
}
最佳答案
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
关于java - fragment 内的 ManagedQuery(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34453604/