Java 两次选择图片时,应用程序崩溃+;旋转图片
在我的应用程序中,有一个“上传图片”按钮:从相机拍摄照片或从多媒体资料中选择 在这两个选项上,都存在两个问题:Java 两次选择图片时,应用程序崩溃+;旋转图片,java,android,android-bitmap,Java,Android,Android Bitmap,在我的应用程序中,有一个“上传图片”按钮:从相机拍摄照片或从多媒体资料中选择 在这两个选项上,都存在两个问题: 再次单击以上载另一张图片时,应用程序崩溃 在第一次“上传”时,图片从侧面旋转(逆时针旋转90度) 导入android.app.Activity; 导入android.app.AlertDialog; 导入android.content.DialogInterface; 导入android.content.Intent; 导入android.database.Cursor; 导入and
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.database.Cursor;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.net.Uri;
导入android.os.Bundle;
导入android.app.Fragment;
导入android.os.Environment;
导入android.provider.MediaStore;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ImageView;
导入android.widget.Toast;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileOutputStream;
导入java.io.OutputStream;
进口实体。订单;
公共类SellABookFragment扩展片段实现View.OnClickListener{
私有图像查看ivBookPicture;
私人编辑文本etBookName、etBookAuthor、etBookGenre、etBookPublishing、etQuantity、etBookPrice、etBookDetails;
私人按钮bUploadPicture,bAddBook;
公开发售{
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u sell\u a\u book,container,false);
ivBookPicture=(ImageView)view.findViewById(R.id.ivBook\u Picture);
etBookName=(EditText)view.findViewById(R.id.etBook\u Name);
etBookAuthor=(EditText)view.findViewById(R.id.etAuthor_Name);
etbookgreen=(EditText)view.findViewById(R.id.etgreen);
etBookPublishing=(EditText)view.findViewById(R.id.etPublishing\u年);
etQuantity=(EditText)view.findViewById(R.id.etBook\u Quantity);
etBookPrice=(EditText)view.findViewById(R.id.etBook\u Price);
etBookDetails=(EditText)view.findViewById(R.id.etBook\u Details);
bUploadPicture=(按钮)view.findViewById(R.id.bUpload\u图片);
bAddBook=(按钮)view.findViewById(R.id.bAdd_Book);
bUploadPicture.setOnClickListener(this);
setOnClickListener(这个);
返回视图;
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.bUpload_图片:
选择图片();
打破
案例R.id.bAdd_书:
addBook();
打破
}
}
私有无效addBook(){
试一试{
HomeActivity.backEnd.addOrder(新订单(HomeActivity.LoggedUser.getID(),
etbookgreen.getText().toString(),
etBookName.getText().toString(),
Integer.parseInt(etBookPublishing.getText().toString()),
etBookAuthor.getText().toString(),
Double.parseDouble(etBookPrice.getText().toString()),
(整数)ivBookPicture.getTag());
}捕获(例外e){
Toast.makeText(getActivity().getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show();
}
}
私有void selectPicture(){
最终字符序列[]选项={
getResources().getString(R.string.take_photo),
getResources().getString(R.string.gallery_choose),
getResources().getString(R.string.cancel)};
AlertDialog.Builder=新建AlertDialog.Builder(getActivity());
setTitle(getResources().getString(R.string.upload_picture));
setItems(选项,新的DialogInterface.OnClickListener(){
@凌驾
公共void onClick(对话框接口对话框,int项){
如果(选项[item].equals(getResources().getString(R.string.take_photo))){
意向意向=新意向(MediaStore.ACTION\u IMAGE\u CAPTURE);
文件f=新文件(android.os.Environment.getExternalStorageDirectory(),“tmp.jpg”);
intent.putExtra(MediaStore.EXTRA_输出,Uri.fromFile(f));
startActivityForResult(意向,1);
}else如果(选项[item].equals(getResources().getString(R.string.gallery_choose))){
意向意向=新意向(意向.行动\u选择,
MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI);
startActivityForResult(意向书,2);
}否则
dialog.dismise();
}
});
builder.show();
}
位图;
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
输出流输出文件;
String path=android.os.Environment.getExternalStorageDirectory()
+文件分隔符
+“MyApp”;
文件;
if(resultCode==Activity.RESULT\u确定){
if(位图!=null){
ivBookPicture.setImageBitmap(空);
bitmap.recycle();
位图=空;
}
试一试{
if(requestCode==1){
文件f=新文件(Environment.getExternalStorageDirectory().toString());
对于(文件tmp:f.listFiles()){
if(tmp.getName().equals(“tmp.jpg”)){
f=tmp;
打破
}