我从girdview适配器类调用startActivityForResult事件。网格视图适配器类是由myFragment类创建的。intent extras总是返回空的onActivityResult事件。你认为错误在哪里?谢谢。
我的gridview适配器类;
public class MyAdapter extends ArrayAdapter<MyInfo> {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(layoutResourceID, null);
}
ImageButton btnImage = (ImageButton) view.findViewById(R.id.btnImage);
@Override
public boolean onLongClick(View v) {
Intent intentCamera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intentCamera.putExtra("Asd", "Asd");
MyFragment.startActivityForResult(intentCamera, 1);
return true;
}
});
}onActivityResult事件的MyFragment类
public class MyFragment extends Fragment {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ImageButton btn = (ImageButton) getActivity().findViewById(R.id.btnImage);
switch (requestCode) {
case 1:
Bitmap photo = (Bitmap) data.getExtras().get("data");
//photo is OK
Bundle bundle = data.getExtras();
if (bundle.getString("Asd") != null) {
//bundle.getString("Asd") NULL }
if (data.hasExtra("Asd")) {
//data.hasExtra("Asd") false
}
break;
default:
break;
}
}
}发布于 2014-09-22 19:42:43
你的自定义字符串"Asd“不会被相机应用程序返回--这不是它的工作方式。
您可以期望将照片图像或图像文件返回给您。
如果你只是问"Asd",那么这就是你的答案--你不会得到它的。如果你想知道为什么没有图片返回,请继续往下读。
(作为上一个答案的一部分留在)
如果您想保存摄像头拍摄的照片,可以按照以下步骤操作:
您需要将正确的数据传递到Intent中的摄像头。根据针对image capture Intent的Android开发人员文档
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
private Uri fileUri;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// create Intent to take a picture and return control to the calling application
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name
// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}..。其中,方法getOutputMediaFileUri()是您编写用来创建要保存图像的文件的方法。
有关调用相机应用程序的更多信息,请参阅以下类似问题:
在那里您将看到更多的工作示例。
发布于 2014-09-22 19:41:25
您正在调用android默认相机应用程序,每个活动都可以接受一组预先定义的附加内容,并且也会返回相同的内容。因此,在OnActivityResult中找不到这种用于摄像机意图的附加类型
例如: intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri);
发布于 2016-09-11 19:36:36
替换此行:
MyFragment.startActivityForResult(intentCamera, 1);使用这一条:
getApplicationBaseContext().startActivity(intentCamera);https://stackoverflow.com/questions/25973051
复制相似问题