Как код для совместного использования текущего изображения, которое находится в поле зрения (в изображенииSwitcher) из галереи. У меня есть приложение, в котором есть несколько изображений в галерее, которые после выбора затем загружаются в imageSwitcher. Итак, теперь я хочу поделиться просмотренным и отправленным изображением, используя раскрывающееся меню «Совместное использование».Как обмениваться имиджем ImageSwitcher в android
Это мой код: 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: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Процесс: 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)