在回调监听器中设置 imageview 位图
Set imageview bitmap in callback listener
所以我有一个从 MainFragment.The 调用的 CameraFragment 问题是我正在使用自定义侦听器将图像数据传递给 MainFragment.java.Here 我如何调用 CameraFragment.java
在MainFragment.java中:
public static class MainFragment extends Fragment implements CameraFragment.CameraFragmentHolder.CameraListener {
ImageView mImageView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
mImageView = (ImageView) rootView.findViewById(R.id.image_view);
return rootView;
}
private OnClickListener onCameraFragmentClicked = new OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, CameraFragment.CameraFragmentHolder.newInstance(MainFragmentHolder.this, 0, false));
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
};
@Override
public void onImageSaved(byte[] data) {
if (data != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
mImageView.setImageBitmap(bitmap);
}
} else {
Log.v(TAG, "Didn't get any result");
}
}
}
然后在 CameraFragment.java 我执行以下操作:
CameraFragment.java
private byte[] mCameraData;
private CameraListener mListener;
public interface CameraListener {
public void onImageSaved(byte[] data);
}
private OnClickListener mDoneButtonClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
if (mCameraData != null) {
removeCameraView();
sendImageDataToListener();
} else {
mCamera = null;
removeCameraView();
}
}
};
//Send image back to Listener
private void sendImageDataToListener() {
if (mCameraData != null) {
mListener.onImageSaved(mCameraData);
} else {
Log.v("CAMERA IMAGE ERROR:", "NO IMAGE DATA");
}
}
private void removeCameraView() {
getActivity().getSupportFragmentManager().popBackStack();
}
我的问题出在 CallBackListener 的 MainFragment 中,当我尝试设置 ImageBitmap 时没有任何反应。
所以@Selvin 这实际上是可能的。我所做的是 onViewStateRestored。我稍微阅读了 android API。这应该不会有任何问题,但我 'm still skeptical about it since I' 还没有完全测试 it.i 修改了 MainFragment.java 如下。
在MainFragment.java中:
Bitmap cameraImage;
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
super.onViewStateRestored(savedInstanceState);
if (cameraImage != null) {
mImageView.setImageBitmap(cameraImage);
}
}
@Override
public void onImageSaved(byte[] data) {
if (data != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
cameraImage = bitmap;
}
} else {
Log.v(TAG, "Didn't get any result");
}
所以我有一个从 MainFragment.The 调用的 CameraFragment 问题是我正在使用自定义侦听器将图像数据传递给 MainFragment.java.Here 我如何调用 CameraFragment.java
在MainFragment.java中:
public static class MainFragment extends Fragment implements CameraFragment.CameraFragmentHolder.CameraListener {
ImageView mImageView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
mImageView = (ImageView) rootView.findViewById(R.id.image_view);
return rootView;
}
private OnClickListener onCameraFragmentClicked = new OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, CameraFragment.CameraFragmentHolder.newInstance(MainFragmentHolder.this, 0, false));
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
};
@Override
public void onImageSaved(byte[] data) {
if (data != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
mImageView.setImageBitmap(bitmap);
}
} else {
Log.v(TAG, "Didn't get any result");
}
}
}
然后在 CameraFragment.java 我执行以下操作:
CameraFragment.java
private byte[] mCameraData;
private CameraListener mListener;
public interface CameraListener {
public void onImageSaved(byte[] data);
}
private OnClickListener mDoneButtonClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
if (mCameraData != null) {
removeCameraView();
sendImageDataToListener();
} else {
mCamera = null;
removeCameraView();
}
}
};
//Send image back to Listener
private void sendImageDataToListener() {
if (mCameraData != null) {
mListener.onImageSaved(mCameraData);
} else {
Log.v("CAMERA IMAGE ERROR:", "NO IMAGE DATA");
}
}
private void removeCameraView() {
getActivity().getSupportFragmentManager().popBackStack();
}
我的问题出在 CallBackListener 的 MainFragment 中,当我尝试设置 ImageBitmap 时没有任何反应。
所以@Selvin 这实际上是可能的。我所做的是 onViewStateRestored。我稍微阅读了 android API。这应该不会有任何问题,但我 'm still skeptical about it since I' 还没有完全测试 it.i 修改了 MainFragment.java 如下。
在MainFragment.java中:
Bitmap cameraImage;
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
super.onViewStateRestored(savedInstanceState);
if (cameraImage != null) {
mImageView.setImageBitmap(cameraImage);
}
}
@Override
public void onImageSaved(byte[] data) {
if (data != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
cameraImage = bitmap;
}
} else {
Log.v(TAG, "Didn't get any result");
}