首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Intent extras返回null

Intent extras返回null
EN

Stack Overflow用户
提问于 2014-09-22 19:30:03
回答 4查看 1.3K关注 0票数 2

我从girdview适配器类调用startActivityForResult事件。网格视图适配器类是由myFragment类创建的。intent extras总是返回空的onActivityResult事件。你认为错误在哪里?谢谢。

我的gridview适配器类;

代码语言:javascript
复制
 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类

代码语言:javascript
复制
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;
    }

}
}
EN

回答 4

Stack Overflow用户

发布于 2014-09-22 19:42:43

你的自定义字符串"Asd“不会被相机应用程序返回--这不是它的工作方式。

您可以期望将照片图像或图像文件返回给您。

如果你只是问"Asd",那么这就是你的答案--你不会得到它的。如果你想知道为什么没有图片返回,请继续往下读。

(作为上一个答案的一部分留在)

如果您想保存摄像头拍摄的照片,可以按照以下步骤操作:

您需要将正确的数据传递到Intent中的摄像头。根据针对image capture Intent的Android开发人员文档

代码语言:javascript
复制
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()是您编写用来创建要保存图像的文件的方法。

有关调用相机应用程序的更多信息,请参阅以下类似问题:

在那里您将看到更多的工作示例。

票数 2
EN

Stack Overflow用户

发布于 2014-09-22 19:41:25

您正在调用android默认相机应用程序,每个活动都可以接受一组预先定义的附加内容,并且也会返回相同的内容。因此,在OnActivityResult中找不到这种用于摄像机意图的附加类型

例如: intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri);

票数 0
EN

Stack Overflow用户

发布于 2016-09-11 19:36:36

替换此行:

代码语言:javascript
复制
MyFragment.startActivityForResult(intentCamera, 1);

使用这一条:

代码语言:javascript
复制
getApplicationBaseContext().startActivity(intentCamera);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25973051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档