0

如何编码以共享画廊中视图(在 imageSwitcher 中)的当前图像。我有一个应用程序,该应用程序在图库中有多个图像,然后将其加载到 imageSwitcher 中。所以现在我想分享当前正在查看和发送的图像,使用“分享意图”打开“分享选项”窗口。

这是我的代码:TextView drawableId;TextView stringCopy;

    int imgs[] =
            {
                    R.drawable.pg1,
                    R.drawable.pg2,

            };
    String imgs1[] =
        {
                "R.drawable.pg1",
                "R.drawable.pg2",
        };
    int imgs2[] =
            {
                    R.drawable.infinity_96_58uvb_pg1,
                    R.drawable.infinity_96_58uvb_pg2,

            };

    ImageSwitcher imgSwitcher, imageSwitcher2;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);
    drawableId = (TextView) findViewById(R.id.textView);
    stringCopy = (TextView) findViewById(R.id.textView2);

    imgSwitcher = (ImageSwitcher) findViewById(imageSwitcher1);
    imgSwitcher.setFactory(this);

    final Gallery gallery = (Gallery) findViewById(R.id.gallery1);
    gallery.setAdapter(new MainActivity.ImageAdapter(this));

    gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View v, int position,
                                long id) {
            imgSwitcher.setImageResource(imgs2[position]);
            drawableId.setText(imgs1[position]+"");
            Toast.makeText(MainActivity.this, imgSwitcher + "", Toast.LENGTH_LONG).show();
            imgSwitcher.setVisibility(View.VISIBLE);
        }
    });
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            postPicture();
        }

        public boolean postPicture() {
            String a = drawableId.getText().toString();
            stringCopy.setText(a);

            Bitmap b = BitmapFactory.decodeFile(a);
            Intent share = new Intent(Intent.ACTION_SEND);
            share.setType("image/*");
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            b.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
            File f = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg");
            try {
                f.createNewFile();
                FileOutputStream fo = new FileOutputStream(f);
                fo.write(bytes.toByteArray());
            } catch (IOException e) {
                e.printStackTrace();
            }
            share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/temporary_file.jpg"));
            startActivity(Intent.createChooser(share, "Share image File"));

            Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_LONG).show();
            return true;
        }

       });



    } 

这是我的错误:

E / BitmapFactory:无法解码流:java.io.FileNotFoundException:R.drawable.pg1:打开失败:ENOENT(没有这样的文件或目录)D / AndroidRuntime:关闭VM E / AndroidRuntime:致命异常:主进程:com .example.mt_br.floatingactionbutton, PID: 13647 java.lang.NullPointerException: 尝试调用虚拟方法'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' com.example.mt_br.floatingactionbutton.MainActivity$2.postPicture(MainActivity.java:112) 处的空对象引用 com.example.mt_br.floatingactionbutton.MainActivity$2.onClick(MainActivity.java:101)

4

1 回答 1

0

我替换了这个:

     public boolean postPicture() {

            int Position = gallery.getSelectedItemPosition();
            Bitmap b = BitmapFactory.decodeResource(getResources(), imgs2[Position]);
于 2017-03-01T16:04:04.623 回答