我的想法是使用两个片段,第一个用于显示联系人列表,第二个用于显示在上部片段中选择的联系人的详细信息。
由于上下文问题,我用来扩展 Fragment 类的类不允许我使用getContentResolver()
方法。现在我尝试在同一个类中获取联系人,该类正在扩展Fragment类并使用它来显示列表视图及其详细信息。在经历了一些较旧的解决方案之后,我找到了创建函数的方法并将Context作为参数传递给它,但问题是我不必从任何其他扩展Activity的类中调用它。我想从扩展Fragment的同一个类中做到这一点。
我该怎么做?
任何帮助都将受到高度赞赏。
答案 0 :(得分:10)
尝试将此代码添加到之前的活动中:
// a static variable to get a reference of our application context
public static Context contextOfApplication;
public static Context getContextOfApplication()
{
return contextOfApplication;
}
并在同一活动中,在onCreate方法中添加以下行:
contextOfApplication = getApplicationContext();
在您的片段中,您可以使用以下方式访问此内容:
Context applicationContext = YourActivity.getContextOfApplication();
applicationContext.getContentResolver();
答案 1 :(得分:8)
使用getter获取应用程序上下文不起作用。上述答案的等价物是
getActivity().getApplicationContext().getContentResolver().
答案 2 :(得分:6)
使用android.support.v4.app.Fragment
时:
getActivity().getContentResolver()
答案 3 :(得分:1)
对于 kotlin 用户-
activity!!.contentResolver
但是什么对我有用-
requireActivity().contentResolver
您可以使用任何适合您的工作。
答案 4 :(得分:0)
我有一个与片段类似的问题,但尝试了
(getContext().getContentResolver(), filePath);
答案 5 :(得分:0)
if (requestCode == GALLERY) {
if (resultCode==RESULT_OK){
if (data!=null) {
Uri uri = data.getData();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
try {
BitmapFactory.decodeStream(getActivity().getContentResolver().openInputStream(uri), null, options);
options.inSampleSize = calculateInSampleSize(options, 100, 100);
options.inJustDecodeBounds = false;
Bitmap image = BitmapFactory.decodeStream(getActivity().getContentResolver().openInputStream(uri), null, options);
//imageofpic.setImageBitmap(image);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}else {
Toast.makeText(getActivity(), "Cancelled",
Toast.LENGTH_SHORT).show();
}
}
答案 6 :(得分:0)
像这样编辑。
Cursor contctCursorVar = getContext().getContentResolver().query(contctDataVar, null,