Как передать переменную в onActivityResult () из populateViewHolder? - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть представление Firebase Recycler, содержащее такую ​​кнопку

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 ().Я пытался получить доступ к переменной "post_key" в OnActivityResult.Поэтому я помещаю его в лишнее и вызываю функцию getString в OnActivityResult.

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

Однако приложение упало и продолжает сообщать мне, что я пытаюсь вызвать виртуальный метод getString для ссылки на пустой объект

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Вы не можете отправить свои данные в другое приложение - если оно не принимает.То, что вы делаете, нигде не упоминается.

Правильный путь

в 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);
}
0 голосов
/ 26 сентября 2018

Вам также необходимо проверить код запроса и код результата:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == GALLERY_REQUEST) {
        if (resultCode == Activity.RESULT_OK) {
            // here you can access the intent
            String msg = (data != null) ? data.getStringExtra("post_key") : "";
            Log.d("post_key", "Got post_key: " + msg);
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}
...