Я стоял перед большой проблемой, я уже много раз просил, но никто не мог мне помочь.ImageView не вставляет изображение камеры во фрагмент
Как и в названии, я сделал Android-приложение с тремя фрагментами. В одном фрагменте я хочу открыть камеру, когда щелкнул пустой ImageView. После выполнения снимка ImageView должен отображать захваченное изображение с камеры.
Приложение открывает камеру, а также снимает рис., Но не вставляет изображение в ImageView.
Этот код находится в моем фрагменте
public class FragmentNew extends Fragment {
public static final int CAMERA_PIC_REQUEST_1 = 1;
public static final int CAMERA_PIC_REQUEST_2 = 2;
public static final int SELECT_PIC_REQUEST_1 = 3;
public static final int SELECT_PIC_REQUEST_2 = 4;
ImageView imageView1;
ImageView imageView2;
View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_new,container, false);
imageView1 = (ImageView) rootView.findViewById(R.id.image_pic1);
imageView2 = (ImageView) rootView.findViewById(R.id.image_pic2);
return rootView;
}
public void check(int requestCode, int resultCode, Intent data,ImageView imv1,ImageView imv2) {
Log.d("Name", "onActivityResult");
switch(requestCode){
case CAMERA_PIC_REQUEST_1:
if(resultCode== Activity.RESULT_OK && data != null && data.getExtras().get("data")!=null){
Log.d("TAG1","Photo pic1");
Bitmap photo = (Bitmap) data.getExtras().get("data");
imv1.setImageBitmap(photo);
Log.d("TAG1","Photo pic1 was set");
}
break;
case CAMERA_PIC_REQUEST_2:
if(resultCode== Activity.RESULT_OK && data != null && data.getExtras().get("data")!=null){
Log.d("TAG2","Photo pic2");
Bitmap photo2 = (Bitmap) data.getExtras().get("data");
//imv2.setImageBitmap(photo2);
imv2.setBackgroundColor(Color.rgb(255, 0, 255));
Log.d("TAG2","Photo pic2 was set");
}
break;
default:
Log.d("Error","It doesn't work");
}
}
}
MainActivity:
public void onButtonClick(View view)
{
switch(view.getId())
{
case R.id.image_accept:
EditText text;
text = (EditText)findViewById(R.id.edit_title);
Toast.makeText(this,"Decision "+ text.getText().toString()+" was created!",Toast.LENGTH_SHORT).show();
break;
case R.id.image_pic1:
Builder builderpic1 = new Builder(this);
builderpic1.setTitle("Pick a Pic")
.setIcon(android.R.drawable.ic_dialog_info)
.setItems(R.array.selection, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which)
{
case 0:
//Intent galeryintent = new Intent(Intent.ACTION_VIEW, Uri.parse(
// "content://media/internal/images/media"));
// startActivity(galeryintent);
//Intent intent = new Intent();
//intent.setType("image/*");
//intent.setAction(Intent.ACTION_GET_CONTENT);
//startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PIC_REQUEST_1);
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
//startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PIC_REQUEST_1);
startActivityForResult(intent, FragmentNew.SELECT_PIC_REQUEST_1);
break;
case 1:
Intent photointent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(photointent, FragmentNew.CAMERA_PIC_REQUEST_1);
break;
case 2:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://images.google.com/"));
startActivity(browserIntent);
break;
}
dialog.dismiss();
}
})
.show();
break;
case R.id.image_pic2:
Builder builderpic2 = new Builder(this);
builderpic2.setTitle("Pick a Pic")
.setIcon(android.R.drawable.ic_dialog_info)
.setItems(R.array.selection, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which)
{
case 0:
Intent galeryintent = new Intent(Intent.ACTION_VIEW, Uri.parse(
"content://media/internal/images/media"));
startActivity(galeryintent);
break;
case 1:
Intent photointent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(photointent2, FragmentNew.CAMERA_PIC_REQUEST_2);
break;
case 2:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://images.google.com/"));
startActivity(browserIntent);
break;
}
dialog.dismiss();
}
})
.show();
break;
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Fragment myFragment = (Fragment) getSupportFragmentManager().findFragmentById(R.id.fragment_new);
ImageView imv1= (ImageView)findViewById(R.id.image_pic1);
ImageView imv2= (ImageView)findViewById(R.id.image_pic2);
((FragmentNew)myFragment).check(requestCode, resultCode, data,imv1,imv2);
}
BackgroundColor просто установить, чтобы проверить, если проблема заключается в битовой карте , но BackgroundColor не ch ange тоже, поэтому я думаю, проблема заключается в том, что фрагмент не находит ImageView в onActivityResult(). Log.d показаны на консоли, но ImageView остается пустым.
Надеюсь, вы можете мне помочь.
Я не думаю, что ваш образ не найден, или он был бы нулевым, и у вас было бы исключение NullPointerException в imv2.setBackgroundColor (Color.rgb (255, 0, 255)); Так что, по крайней мере, это еще не ваша проблема. Выводит ли ваш Log.d («TAG2», «Photo pic2»); ? – Damien
Да вывод печатается на консоли – RoterBaron
Он выводит журнал, но не устанавливает фон? Вы можете видеть предыдущий фон? Вы уверены в размерах вашего ImageView? – Damien