如何从populateViewHolder将变量传递给onActivityResult()?

时间:2018-09-26 05:22:38

标签: android onactivityresult getstring

我有一个Firebase Recycler View,其中包含这样的按钮

final String post_key = getRef(position).getKey();

viewHolder.btnUpload.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {


                                Intent data = new Intent();

                                data.putExtra("post_key",post_key);
                                Log.d("post_key", data.getExtras().getString("post_key"));

                                data.setType("image/*");
                                data.setAction(Intent.ACTION_GET_CONTENT);
                                startActivityForResult(data, GALLERY_REQUEST);


                            }
                        });

这将触发OnActivityResult()中的操作。我试图在OnActivityResult中访问变量“ post_key”。因此,我将其放在多余的位置,并在OnActivityResult中调用getString函数。

final String post_key=data.getExtras().getString("post_key");

但是,应用程序崩溃了,并不断告诉我我试图在空对象引用上调用虚拟方法'getString'

2 个答案:

答案 0 :(得分:0)

您还需要检查请求代码和结果代码:

test20 <- image_read("E:/xx/image.tif") %>%
image_resize("4000") %>%
image_convert(colorspace = 'gray') %>%
image_trim() %>%
image_ocr()
cat(test20)
write.table(test2, "E:/xx/output.txt", sep="\t")

答案 1 :(得分:0)

您不能将数据发送到另一个应用程序-如果它不接受。您所做的事情在任何地方都没有提及。

正确的方式

<{> onClick中的

不要多余,将post_key保留在活动/适配器中。

adapter.setPostKey(post_key);

然后在onActivityResult()中获得此post_key

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == GALLERY_REQUEST) {
        if (resultCode == Activity.RESULT_OK) {
            String post_key = adapter.getPostKey();
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}