我从girdview适配器类调用startActivityForResult事件。 Gridview适配器类是由myFragment类创建的。 intent extras总是返回null 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;
}
}
}
答案 0 :(得分:2)
相机应用程序不会返回您的自定义字符串“Asd” - 这不是它的工作方式。
您可以期望将照片图像还原给您,或者图像文件。
如果您只是询问“Asd”,那么这就是您的答案 - 您将无法取回它。如果你问为什么没有图片回来,请继续阅读。
(作为上一个答案的一部分留下)
如果要保存相机拍摄的照片,可以按照以下步骤操作:
您需要将正确的数据传递到Intent
中的相机。根据{{3}}的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()
是您编写的用于创建要保存图像的文件的方法。
有关调用相机应用的详细信息,请参阅以下类似问题:
在那里你会看到更多有用的例子。
答案 1 :(得分:0)
您正在调用Android默认相机应用程序 每个活动都可以接受一组预定义的附加内容,并且也会返回相同的附加内容。 因此,在OnActivityResult
中找不到这种类型的相机意图附加功能Ex:intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri);
答案 2 :(得分:0)
替换此行:
MyFragment.startActivityForResult(intentCamera, 1);
有了这个:
getApplicationBaseContext().startActivity(intentCamera);
答案 3 :(得分:-1)
Bundle bundle = data.getExtras();
您在intent
中提取bundle
而未在bundle
中添加intent
。
如果您需要来自intent的字符串,请调用
data.getStringExtra("Asd")