2017-02-13 46 views
0

中從imageSwitcher共享圖像我如何編碼從庫中共享當前圖像(在imageSwitcher中)。我有一個應用程序,其中有一個庫中有多個圖像,選擇後,然後加載到imageSwitcher。因此,現在我想要使用Share Intent共享正在查看和發送的圖像,並彈出共享選項窗口。這是我的代碼: TextView drawableId; TextView stringCopy;如何在android

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。壓縮(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)

回答

0

我取代的這樣的:

 public boolean postPicture() { 

      int Position = gallery.getSelectedItemPosition(); 
      Bitmap b = BitmapFactory.decodeResource(getResources(), imgs2[Position]);