使getContentResolver()在扩展Fragment类的类中工作

时间:2015-08-06 09:57:29

标签: java android android-fragments



我的想法是使用两个片段,第一个用于显示联系人列表,第二个用于显示在上部片段中选择的联系人的详细信息。
由于上下文问题,我用来扩展 Fragment 类的类不允许我使用getContentResolver()方法。现在我尝试在同一个类中获取联系人,该类正在扩展Fragment类并使用它来显示列表视图及其详细信息。在经历了一些较旧的解决方案之后,我找到了创建函数的方法并将Context作为参数传递给它,但问题是我不必从任何其他扩展Activity的类中调用它。我想从扩展Fragment的同一个类中做到这一点。

我该怎么做?

任何帮助都将受到高度赞赏。

7 个答案:

答案 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,