Warum wird die oncreate-Methode nach startActivityForResult aufgerufen?
In meiner Anwendung möchte ich ein Bild aus @ auswählGallery
und setze das Bild inListView
. In meiner ListViewI have 16 rows. So when ever item click in
Listenansichopen the gallery and set the image to
Listenansich. But my problem is some times after
startActivityForResult (),
oncreate () `Methode aufgerufen. Dies ist der onclick code
Intent intent = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(
Intent.createChooser(intent, "Select File"),
SELECT_PICTURE);
Und dies ist das Ergebnis der Onaktivität
public void onActivityResult(int requestcode, int resultcode, Intent data) {
Log.e("result", "result");
displayMetrics = this.getResources().getDisplayMetrics();
Ew = displayMetrics.widthPixels;
Eh = displayMetrics.heightPixels;
switch (requestcode) {
case SELECT_PICTURE:
if (resultcode == RESULT_OK) {
lelListLayout.setVisibility(View.GONE);
relImageLayout.setVisibility(View.VISIBLE);
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
ExifInterface exif = null;
// Bitmap bmRotated = null;
try {
exif = new ExifInterface(selectedImagePath);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
int orientation = exif.getAttributeInt(
ExifInter,face.TAG_ORIENTATION,
ExifInterface.ORIENTATION_UNDEFINED);
Log.e("Orientation==>", "" + orientation);
try {
bmRotated = null;
bmGallayImage = null;
trimCache();
bmGallayImage = convertBitmap(selectedImagePath);
bmRotated = InventorySubmitImagesActivity.rotateBitmap(
bmGallayImage, orientation);
// if(bmRotated.getWidth()>bmRotated.getHeight()){
if (bmRotated.getWidth() > 1024) {
float x = 0;
x = 1024 / (float) bmRotated.getWidth();
// Log.e("x====","value "+x);
bmRotated = Bitmap.createScaledBitmap(bmRotated, 1024,
(int) (bmRotated.getHeight() * x), true);
}
/*
* }else{ if(bmRotated.getHeight() > 1024){ float x=0;
* x=1024/(float)bmRotated.getHeight();
* Log.e("x====","value "+x);
*
* bmRotated = Bitmap.createScaledBitmap(bmRotated,
* (int)(bmRotated.getWidth()*x), 1024, true); } }
*/
Eh = Eh - ll_buttonlayout.getHeight();
float iw = bmRotated.getWidth();
float ih = bmRotated.getHeight();
float diff = Ew / iw;
float layoutwidth = Ew;
float layoutheight = diff * ih;
if (layoutheight > Eh) {
diff = Eh / ih;
layoutwidth = Ew * diff;
layoutheight = Eh;
}
bmGallayImage = bmRotated;
if (bmRotated != null) {
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
(int) layoutwidth, (int) layoutheight);
relImage.setLayoutParams(layoutParams);
Drawable dr = new BitmapDrawable(bmRotated);
old_width = bmRotated.getWidth();
old_height = bmRotated.getHeight();
relImage.setBackgroundDrawable(dr);
}
left = (int) layoutwidth / 2 - 34;
top = (int) layoutheight / 2 - 8;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// drag_check=true;
relImage.removeAllViews();
imgMarker = new ImageView(this);
final RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT);
relImage.addView(imgMarker, layoutParams);
imgMarker.setScaleType(ImageView.ScaleType.MATRIX);
bmdragImage = BitmapFactory.decodeResource(getResources(),
R.drawable.image_marker);
imgMarker.setImageBitmap(bmdragImage);
matrix = new Matrix();
savedMatrix = new Matrix();
oldDist = 0f;
start = new PointF();
mid = new PointF();
matrix.postTranslate(left, top);
imgMarker.setImageMatrix(matrix);
imgMarker.setOnTouchListener(RefurbishmentImageActivity.this);
imgMarker.setVisibility(View.VISIBLE);
// end..
// }
}
break;
}}
In diesemListView
nach Auswahl von 6 oder 7 Bildern bei der aufgerufenen Methode vor demonactivityresult()
. Aber danachoncreate()
Methode erneut Startaktivität Ergebnis aufgerufen. Bitte leiten Sie mich, was das Problem ist. Vielen Dank im Voraus an alle ..