내 활동에서 Bitmap
객체를 생성 한 다음 다른 객체를 실행해야합니다. Activity
, 하위 활동에서이 Bitmap
객체를 전달하려면 어떻게해야합니까? 출시 될 예정입니까?)하나의 활동에서 다른 활동으로 Bitmap 객체를 전달하는 방법
답변
Bitmap
는 Parcelable
구현, 그래서 당신은 항상 의도를 전달할 수하십시오 Parcelable가 발생합니다 같은 비트 맵을 통과, 사실
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
:
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
하고 다른 쪽 끝을 검색 "JAVA BINDER FAILURE"오류가 발생했습니다. 비트 맵을 바이트 배열로 전달하고 다음 활동에서 표시 할 수 있도록 빌드하십시오.
내 경우 how do you pass images (bitmaps) between android activities using bundles?
방금이 어려운 교훈을 배웠습니다. 직관적이지 않습니다. – ZaBlanc
, 위에서 언급 한 방법은 나를 위해 일하지 않았다 :
나는 여기에 내 솔루션을 공유했습니다. 비트 맵을 의도에 넣을 때마다 두 번째 활동이 시작되지 않았습니다. 비트 맵을 byte []로 전달할 때도 마찬가지입니다. 나는이 link을 따라 매우 빠르게 샤름과 같은 일 : 제 1 acitiviy에package your.packagename
import android.graphics.Bitmap;
public class CommonResources {
public static Bitmap photoFinishBitmap = null;
}
을 :
Constants.photoFinishBitmap = photoFinishBitmap;
Intent intent = new Intent(mContext, ImageViewerActivity.class);
startActivity(intent);
을 여기 내 2 차 활동의)합니다 (에서 onCreate입니다 :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bitmap photo = Constants.photoFinishBitmap;
if (photo != null) {
mViewHolder.imageViewerImage.setImageDrawable(new BitmapDrawable(getResources(), photo));
}
}
나는 이것을 시도했지만 작동하지 않았다. 링크를 따라 가면'Constants.photoFinishBitmap' 대신'CommonResources.photoFinishBitmap'을 사용해야합니다. –
나쁜 습관. 런타임시 응용 프로그램의 권한 변경과 같은 전체 프로세스를 재 작성하는 동안 Activity 클래스의 정적 필드는 어떻게됩니까? 대답은 NPE입니다. – Alexander
활동간에 번들로 비트 맵을 패스하는 것은 좋은 생각이 아닙니다. Parceable (1MB)의 크기 제한 때문에. 내부 저장소의 파일에 비트 맵을 저장하고 여러 가지 작업으로 저장된 비트 맵을 검색 할 수 있습니다. 다음은 몇 가지 샘플 코드입니다.
내부 저장 장치에 파일에 myimage을을 비트 맵을 저장하려면Bitmap bitmap = BitmapFactory.decodeStream(context
.openFileInput("myImage"));//here context can be anything like getActivity() for fragment, this or MainActivity.this
:
public String createImageFromBitmap(Bitmap bitmap) { String fileName = "myImage";//no .png or .jpg needed try { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE); fo.write(bytes.toByteArray()); // remember close file output fo.close(); } catch (Exception e) { e.printStackTrace(); fileName = null; } return fileName; }
그런 다음 다음 활동에서 당신은 다음과 같은 코드를 사용하여 비트 맵으로이 파일 myimage을 디코딩 할 수 있습니다 노트 null 및 비트 맵 스케일링에 대한 많은 검사가 필요 없습니다.
이미지가 너무 커서 저장소에로드 할 수 없으면 (수신 작업 내에서) 비트 맵에 대한 전역 정적 참조 만 사용하는 것이 좋습니다 (onDestory에서 null로 재설정 됨). isChangingConfigurations가 true를 돌려 줄 때만
인 텐트에는 크기 제한이 있기 때문에. 공용 정적 객체를 사용하여 서비스에서 브로드 캐스트로 비트 맵을 전달합니다.내 서비스에서
public class ImageBox {
public static Queue<Bitmap> mQ = new LinkedBlockingQueue<Bitmap>();
}
패스
private void downloadFile(final String url){
mExecutorService.submit(new Runnable() {
@Override
public void run() {
Bitmap b = BitmapFromURL.getBitmapFromURL(url);
synchronized (this){
TaskCount--;
}
Intent i = new Intent(ACTION_ON_GET_IMAGE);
ImageBox.mQ.offer(b);
sendBroadcast(i);
if(TaskCount<=0)stopSelf();
}
});
}
내 브로드 캐스트 리시버
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
LOG.d(TAG, "BroadcastReceiver get broadcast");
String action = intent.getAction();
if (DownLoadImageService.ACTION_ON_GET_IMAGE.equals(action)) {
Bitmap b = ImageBox.mQ.poll();
if(b==null)return;
if(mListener!=null)mListener.OnGetImage(b);
}
}
};
그것은 늦을 수도 있지만 도움이 될 수 있습니다. 이렇게 제 단편 또는 활동 은 .. 제 클래스/단편에이어서
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
description des = new description();
if (requestCode == PICK_IMAGE_REQUEST && data != null && data.getData() != null) {
filePath = data.getData();
try {
bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), filePath);
imageView.setImageBitmap(bitmap);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
constan.photoMap = bitmap;
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static class constan {
public static Bitmap photoMap = null;
public static String namePass = null;
}
예
... 대한 클래스를 선언 할Bitmap bm = postFragment.constan.photoMap;
final String itemName = postFragment.constan.namePass;
는 호프가.
비트 맵 전송을 만들 수 있습니다. 첫 번째 클래스에서 ....
을이 시도 :
1) 작성 :
private static Bitmap bitmap_transfer;
2)) getter 및 setter
public static Bitmap getBitmap_transfer() {
return bitmap_transfer;
}
public static void setBitmap_transfer(Bitmap bitmap_transfer_param) {
bitmap_transfer = bitmap_transfer_param;
}
3 만들기 이미지를 설정합니다
를ImageView image = (ImageView) view.findViewById(R.id.image);
image.buildDrawingCache();
setBitmap_transfer(image.getDrawingCache());
그런 다음, 두 번째 cla SS는 : 비트 맵 파일 또는 자원으로 존재
ImageView image2 = (ImageView) view.findViewById(R.id.img2);
imagem2.setImageDrawable(new BitmapDrawable(getResources(), classe1.getBitmap_transfer()));
- 1. 하나의 활동에서 다른 활동으로 가치를 전달하는 또 다른 방법
- 2. 하나의 활동에서 다른 활동으로 토스트를 표시하는 방법
- 3. 동일한 객체 하나를 다른 두 개의 다른 활동으로 전달하는 방법
- 4. 한 활동에서 이전 활동으로 값을 전달하는 방법
- 5. 2 개의 활동에서 하나의 활동으로 문자열을 전달하는 방법은 무엇입니까?
- 6. 버튼 클릭으로 하나의 활동에서 다른 활동으로 갈 때 시간이 걸림
- 7. 하나의 활동에서 취한 입력을 다른 활동으로 전송하는 방법은 무엇입니까?
- 8. 한 활동에서 다른 활동으로 arrylist를 전달
- 9. 데이터/매개 변수를 Android의 다른 활동으로 전달하는 방법
- 10. 한 활동에서 다른 활동으로 데이터 보내기
- 11. 하나의 활동으로 ArrayList를 수집하는 방법
- 12. 하나의 스레드에서 다른 스레드로 간단한 Java 객체를 전달하는 빠른 방법
- 13. 한 활동에서 다른 활동으로 동일한 xmpp 연결을 얻는 방법은 무엇입니까?
- 14. 로딩 활동에서 주 활동으로 인수 전달
- 15. 활동에서 다른 활동으로 변경하는 동안 ProgressDialog를 표시하는 방법은 무엇입니까?
- 16. 한 활동에서 다른 활동으로 이미지를 클릭하는 방법은 무엇입니까?
- 17. 전경 활동에서 다른 활동으로 의도를 보내지 않고 닫으십시오.
- 18. Android : 하위 활동으로 데이터를 전달하는 방법?
- 19. 한 활동에서 이전 활동으로 문자열 전달
- 20. 하나의 활동에서 Android의 다른 활동으로 대량의 데이터 (즉, 객체)를 전송하는 가장 좋은 방법은 무엇입니까?
- 21. 한 활동에서 다음 활동으로 참조로 개체를 전달하는 것이 가능하고 최상의 전략은 무엇입니까?
- 22. Android 30 활동, 하나의 활동으로 만드는 방법
- 23. 하나의 그래픽 객체를 다른 그래픽 객체로 복사하는 방법
- 24. 하나의 활동에서 다른 활동으로 이동하면 .where는 하나의 main.xml 만 있기 때문에 새로운 활동에 대한 요소를 정의 할 수 있습니다.
- 25. 체크 된 항목을 다른 활동으로 전달하는 방법은 무엇입니까?
- 26. receiveActivity에서 다른 활동으로 매개 변수를 전달하는 방법은 무엇입니까?
- 27. 하나의 활동에서 View 클래스를 확장하는 클래스로 값 전달
- 28. 주 활동에서 활동 시작 및 주 활동으로 돌아 가기
- 29. MapView를 다른 액티비티에 전달하는 방법
- 30. 별도의 스레드 클래스에서 안드로이드의 활동으로 데이터를 전달하는 방법
경우, 그는'URI' 또는 비트 맵의'ResourceID' 아닌 비트 맵 자체를 전달하는 것이 좋습니다. 전체 비트 맵을 전달하려면 많은 메모리가 필요합니다. URL을 전달할 때 메모리가 거의 필요하지 않으므로 각 액티비티에서 필요에 따라 비트 맵을로드하고 크기를 조정할 수 있습니다. – slayton
이 2.3에서 작동하지 않습니다. –
나를 위해 작동하지 않지만이 작업은 다음과 같습니다. http://stackoverflow.com/questions/11010386/send-bitmap-using-intent-android – Houssem