得到错误:无法解析方法getResource()

时间:2017-11-21 12:37:36

标签: java android share

我尝试与Intent.ACTION_SEND分享图片,但收到此错误:

  

无法解析方法getResource()

这是我尝试与以下内容共享图片的代码:

            File root = android.os.Environment.getExternalStorageDirectory();
            File dir = new File (root.getAbsolutePath() + "/myFolder");
            dir.mkdirs(); // build directory
            Random generator = new Random();
            int n = 10000;
            n = generator.nextInt(n);
            String fileName = "Image-"+ n +".jpg";
            File file = new File(dir, fileName);
            if (file.exists ()) file.delete ();

            try {
                FileOutputStream outStream = new FileOutputStream(file);
                InputStream is;
                Bitmap bitmap;
                is = this.getResources().openRawResource(R.drawable.image1);
                bitmap = BitmapFactory.decodeStream(is);
                try {
                    is.close();
                    is = null;
                } catch (IOException e) {
                }
                bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outStream);
                outStream.flush();
                outStream.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            Uri outputFileUri = Uri.fromFile(file);
            Intent intent = new Intent(Intent.ACTION_SEND);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.setType("image/jpeg");
            intent.putExtra(Intent.EXTRA_STREAM, outputFileUri);
            startActivity(Intent.createChooser(intent, "Share this image via"));

3 个答案:

答案 0 :(得分:3)

如果您使用片段:

getActivity().getResources();

或尝试:

getApplicationContext().getResources();

如果您在活动中但在内部班级中编辑此行中的this字词:

is = this.getResources().openRawResource(R.drawable.image1);

要:

is = Your_Activity_Class_Name.this.getResources().openRawResource(R.drawable.image1);

答案 1 :(得分:1)

首先,该方法称为getResources(),带有's'。它是基类Context类的方法。因此,您必须从您的活动或服务访问它。如果你的函数属于一个单独的(非上下文)类,你应该保持对上下文的引用(不良实践),或者在函数完成之后使用getResources(),例如在上下文中的回调中。

答案 2 :(得分:1)

如果它是一个片段,那么这将为我解决问题:

Hello World!

但是,如果它是一项活动,则可以使用:

getActivity.getString(R.string.string_name);

最后,在适配器中,您可以执行以下操作:

this.getString(R.string.string_name);