【问题标题】:Making getContentResolver() to work in class extending Fragment class使 getContentResolver() 在扩展 Fragment 类的类中工作
【发布时间】:2015-08-06 09:57:28
【问题描述】:



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

我该怎么做?

我们将不胜感激。

【问题讨论】:

  • getActivity().getContentResolver(); 不成功?
  • 不。 getActivity()getApplicationContext() 都不起作用。
  • @AhmedAbidi 是的,它对我有用,而且方法也正确,谢谢

标签: java android android-fragments


【解决方案1】:

尝试将此代码添加到以前的活动中:

// 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();

【讨论】:

  • 太棒了!我还没有尝试过,但我相信这会奏效。我在想这样的事情来为上下文使用getter函数。非常感谢所有试图提供帮助的人。
【解决方案2】:

使用 getter 获取应用程序上下文不起作用。相当于上面的答案是

getActivity().getApplicationContext().getContentResolver(). 

【讨论】:

    【解决方案3】:

    使用android.support.v4.app.Fragment时:

    getActivity().getContentResolver()

    【讨论】:

      【解决方案4】:

      我在片段上遇到了类似的问题,但尝试了

      (getContext().getContentResolver(), filePath);
      

      【讨论】:

      • 应该解释什么是变化以及为什么,因为之前在这个问题上发布了类似的评论!
      【解决方案5】:

      对于 kotlin 用户-

      activity!!.contentResolver
      

      但是什么对我有用-

        requireActivity().contentResolver
      

      你可以使用任何适合你的工作。

      【讨论】:

        【解决方案6】:
        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();
                    }
        }
        

        【讨论】:

          【解决方案7】:

          像这样编辑。

            Cursor contctCursorVar = getContext().getContentResolver().query(contctDataVar, null,
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多